记录洛谷刷题QAQ
给你两个十进制正整数 a , b a, b a,b,输出将这两个数翻转后的较大数。
「翻转」在本题中的定义详见「说明 / 提示」部分。
第一行,两个十进制正整数 a , b a, b a,b。
第一行, a a a 和 b b b 翻转后的较大数。
734 893
437
221 231
132
839 237
938
设原数有 f f f 位,最高位为 a 1 a_1 a1,第二位为 a 2 a_2 a2,……,第 f f f 位为 a f a_f af。
那么该数的翻转同样有 f f f 位,最高位为为 a f a_f af,第二位为 a f − 1 a_{f - 1} af−1,……,第 f f f 位为 a 1 a_1 a1。
对于 100 % 100\% 100% 的数据, 100 ≤ a , b ≤ 999 100 \le a, b \le 999 100≤a,b≤999, a , b a, b a,b 不含 0 0 0 或不为 0 0 0。
翻译自 COCI 2009-2010 #3 T1 FILIP,满分 30,每个测试点 3 分,共 10 个测试点。
#include
#include
#include
#include
int main()
{
char a[100], b[100];
scanf("%s%s",&a,&b);
int len1 = strlen(a);
int len2 = strlen(b);
int a1 = 0;
for(int i = len1 -1;i >= 0;i--)
{
a1 = a1 + (a[i] - '0')*pow(10,i);
// printf("%d\n",a1);
}
int b1 = 0;
for(int i = len1 -1;i >= 0;i--)
{
b1 = b1 + (b[i] - '0')*pow(10,i);
// printf("%d\n",b1);
}
if(a1 > b1)
{
printf("%d\n",a1);
}
else
printf("%d\n",b1);
return 0;
}
给定一个长度为 n n n、元素由 0 0 0 或 1 1 1 组成的数组。
现在可以选择若干(可以为 0)个值为 0 0 0 的元素,将其修改为 1 1 1。
记:
求要怎么修改才能使 x − y x-y x−y 最大,并构造一个方案(输出修改后的数组)。
本题含有多组数据。
第一行一个整数 T T T 表示数据组数。
接下来 2 × T 2\times T 2×T 行,每 2 2 2 行表示一组数据。
在一组数据中,第一行一个整数 n n n,表示数组的长度;
第二行 n n n 个整数(0 或 1),表示给定的数组。
共 2 × T 2\times T 2×T 行,每 2 2 2 行表示一组数据。
在一组数据中,第一行输出一个整数表示 x − y x-y x−y 的最大值;
第二行 n n n 个整数(0 或 1)表示修改以后的数组。如有多个方案,任意输出一种即可。
1
1
1
1
1
2
3
1 0 1
5
0 1 0 1 0
2
1 1 1
2
0 1 1 1 1
本题采用捆绑测试。
对于所有数据,保证 T ≤ 10 , 1 ≤ n ≤ 1 0 5 T\le10,1\le n\le 10^5 T≤10,1≤n≤105,数组元素 ∈ { 0 , 1 } \in \{0,1\} ∈{0,1}。
#include
#include
#include
#include
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int len;
scanf("%d",&len);
int num[len];
int sum = 0;
for(int i = 0;i < len;i++)
{
scanf("%d",&num[i]);
if(num[i] == 1)
sum++;
}
printf("%d\n",sum);
for(int i = 0;i < len;i++)
{
printf("1 ");
}
printf("\n");
}
return 0;
}
去 NOIP 考场时有两个优良传统:打狼和喝快乐水。这两项活动都能给同学们带来快乐。
VG 的学校有 n n n 个人要去考 NOIP。
每个人有一个交通方式,第 i i i 个人的交通方式为 t i t_i ti, t i = 1 t_i=1 ti=1 表示这个人坐学校大巴, t i = 0 t_i=0 ti=0 表示这个人自己去考场。
每个人有一个颓废值,第 i i i 个人的颓废值为 q i q_i qi, q i = 1 q_i=1 qi=1 表示这个人愿意打狼, q i = 0 q_i=0 qi=0 表示这个人不愿意打狼。
每个人去考场时会买一瓶快乐水,但如果坐大巴且愿意打狼的人数(即满足 t i = 1 t_i=1 ti=1 且 q i = 1 q_i=1 qi=1 的 i i i 个数) k k k 不小于 m m m,则这 k k k 个人只需要买 m m m 瓶快乐水。
现在,VG 统计出了所有人的交通方式和颓废值,他请你帮他求出最终所有人买快乐水的总瓶数。
第一行三个整数 n , m , t y p e n,m,type n,m,type。其中 t y p e type type 表示特殊限制编号,具体意义见数据范围。它可能可以帮助你获得部分分,但正解不依赖于此。
第二行 n n n 个整数,第 i i i 个整数为 t i t_i ti。
第三行 n n n 个整数,第 i i i 个整数为 q i q_i qi。
一行一个整数,表示所有人最终买的快乐水总瓶数。
3 1 3
1 0 1
0 1 1
3
3 1 3
1 1 1
0 1 1
2
【样例解释 #1】
三个人的情况如下:
第 1 1 1 个人乘坐大巴但不打狼;
第 2 2 2 个人打狼但不乘坐大巴;
第 3 3 3 个人乘坐大巴而且打狼。
所以,只有 1 1 1 个人既乘车又打狼,满足不小于 m m m 的条件,故对于这 1 1 1 个人需要购买 m m m 瓶快乐水,剩下 2 2 2 个人购买 2 2 2 瓶快乐水,总共须购买 3 3 3 瓶快乐水。
【数据规模与约定】
本题不采用捆绑测试
测试点编号 | n , m n,m n,m | t y p e type type | t i t_i ti | q i q_i qi |
---|---|---|---|---|
1 1 1 | ≤ 30 \le 30 ≤30 | = 0 =0 =0 | = 0 =0 =0 | = 0 =0 =0 |
2 2 2 | ≤ 70 \le 70 ≤70 | = 0 =0 =0 | = 0 =0 =0 | = 0 =0 =0 |
3 3 3 | ≤ 30 \le 30 ≤30 | = 1 =1 =1 | = 1 =1 =1 | = 1 =1 =1 |
4 4 4 | ≤ 70 \le 70 ≤70 | = 1 =1 =1 | = 1 =1 =1 | = 1 =1 =1 |
5 5 5 | n = m n=m n=m | = 2 =2 =2 | 无特殊限制 | 无特殊限制 |
6 6 6 | n = m n=m n=m | = 2 =2 =2 | 无特殊限制 | 无特殊限制 |
7 7 7 | n = m n=m n=m | = 2 =2 =2 | 无特殊限制 | 无特殊限制 |
8 8 8 | 无特殊限制 | = 3 =3 =3 | 无特殊限制 | 无特殊限制 |
9 9 9 | 无特殊限制 | = 3 =3 =3 | 无特殊限制 | 无特殊限制 |
10 10 10 | 无特殊限制 | = 3 =3 =3 | 无特殊限制 | 无特殊限制 |
对于 100 % 100\% 100% 的数据, 1 ≤ m ≤ n ≤ 100 1 \le m \le n \le 100 1≤m≤n≤100, t i , q i ∈ { 0 , 1 } t_i,q_i \in \{0,1\} ti,qi∈{0,1}, t y p e ∈ { 0 , 1 , 2 , 3 } type \in \{0,1,2,3\} type∈{0,1,2,3}。
#include
#include
#include
#include
int main(){
int n,m,type,sum=0;
scanf("%d%d%d",&n,&m,&type);
int a[10001],b[10001];
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
if(a[i]==b[i]&&a[i]==1) sum++;//输入之后判断 a_i=1 的个数
if(sum>m) printf("%d",m+n-sum);
else printf("%d",n);
return 0;
}
给定一个长度不超过 100 100 100 的只包含小写字母和 0 ∼ 9 0 \sim 9 0∼9 字符的字符串(字符串中的字母可视为分隔符)。求字符串中包含多少个不同的数。
一行只包含小写字母和 0 ∼ 9 0 \sim 9 0∼9 字符的字符串,保证每个数最多有 3 3 3 位。
输出字符串中不同数的数量。
abc123abc2a3a1
4
borna123vitez
1
as23dkrf23smk1asd23sam9
3
对于 50 % 50\% 50% 的数据,所有出现的数都互不相同。
对于 100 % 100\% 100% 的数据,字符串的长度在 1 1 1 到 100 100 100 之间。
本题分值按 COCI 原题设置,满分 50 50 50。
题目译自 COCI2020-2021 CONTEST #5 T1 Šifra。
#include
#include
#include
#include
int vis[1001];
char in[10000];
int num,flag;
int main()
{
scanf("%s",&in); //读入字符串
int len=strlen(in); //字符串长度
for(int i=0;i<len;i++)
{
if(in[i]>='0'&&in[i]<='9') //如果正在处理的这一位是数字
{
num=num*10+in[i]-'0';//将数字进行处理
flag=1; //flag=1 表示这一位是数字
}
else if(flag==1) //如果正在处理的这一位是字母且上一位是数字
{
flag=0;//标记这一位不是数字
vis[num]=1;//标记这一个数字出现过
num=0;//将处理的数字清空
}
}
if(flag==1)
vis[num]=1;//如果最后一位是数字也进行处理
int ans=0;
for(int i=0;i<=1000;i++)
if(vis[i])//计算出现过的数字
ans++;
printf("%d",ans);//输出
return 0;
}
我希望,
我们能留下存在过的痕迹,
然后优雅地离去,
无声地消逝。
我回想,
我们共同拥有的那些记忆:
我们随金色的落叶而聚,
又同白色的雪花而去。
或许什么也没有留下,
就要空手而归。
但我不必恐惧,
不需如此匆忙。
因为那些落叶和雪花,
永远地保存着,
我们书写的故事,
和无比珍贵的回忆。
—— lgswdn
小 Y 和小 Z 都是生活在 Arcaea Offline 的精灵。小 Y 有无数片落叶,其中第 i i i 片落叶的价值为 C i C_i Ci。小 Z 有无数片雪花,其中第 i i i 片雪花的价值为 E i E_i Ei。经过小 X 的仔细观察,他发现 C C C 和 E E E 满足特殊的条件:
C i = { x × i ( x × i ≤ K ) − K otherwise C_i= \begin{cases} x\times i& (x\times i\le K)\\ -K& \text{otherwise} \end{cases} Ci={x×i−K(x×i≤K)otherwise
E i = { y × i ( y × i ≤ K ) − K otherwise E_i= \begin{cases} y\times i& (y\times i\le K)\\ -K& \text{otherwise} \end{cases} Ei={y×i−K(y×i≤K)otherwise
小 Y 和小 Z 可以对这些落叶和雪花进行一些操作。每次,他们会选择满足价值之和 ≥ K \ge K ≥K 的一片落叶和一片雪花,然后让把它们一同组成一段彩色的回忆(Erinnerung)。之后,这片雪花和这片落叶就消失不见了,之后的操作也不能再用到这片雪花和落叶了。
小 X 想知道,他们最多能进行多少次操作。
本题有多组数据。
第一行一个整数 T T T,表示数据的组数。
接下来 T T T 行,每行三个非负整数 x , y , K x,y,K x,y,K。
对于每组数据,输出一个整数,代表最多能有多少次操作。每组数据的答案用一个换行符隔开。
2
2 3 10
2 4 11
3
2
1
0 0 1
0
【样例解释】
对于样例 1 的第一组数据,落叶的价值为 2 , 4 , 6 , 8 , 10 , − 10 , − 10 … 2,4,6,8,10,-10,-10\dots 2,4,6,8,10,−10,−10… ,雪花的价值为 3 , 6 , 9 , − 10 , − 10 … 3,6,9,-10,-10\dots 3,6,9,−10,−10… 。第一次操作选取第 4 4 4 片落叶和第 1 1 1 片雪花,价值和为 11 11 11。第二次操作选取第 2 2 2 片落叶和第 2 2 2 片雪花,价值和为 10 10 10。第三次操作选取第 5 5 5 片落叶和第 3 3 3 片雪花,价值和为 19 19 19。如是,可以进行 3 3 3 次操作。容易证明不存在更优的解。
对于第二组数据,进行的两次操作可以为:选取第 4 4 4 片落叶和第 1 1 1 片雪花,以及选取第 2 2 2 片落叶和第 2 2 2 片雪花。
对于样例 2,所有的雪花和落叶的价值都为 0 0 0,不可能找到落叶和雪花使其和 ≥ 1 \ge 1 ≥1。
【数据范围】
对于 100 % 100\% 100% 的数据,满足 0 ≤ x , y ≤ 1 0 10 0\le x,y\le 10^{10} 0≤x,y≤1010, 1 ≤ K ≤ 1 0 10 1\le K\le 10^{10} 1≤K≤1010, 1 ≤ T ≤ 1 0 5 1\le T\le 10^5 1≤T≤105。
#include
#include
#include
#include
#define int unsigned long long
int max(int a, int b)
{
if(a > b)
return a;
else
return b;
}
int min(int a, int b)
{
if(a > b)
return b;
else
return a;
}
int t;
long long x, y, k;
int main()
{
scanf("%d", &t);
while(t --)
{
scanf("%lld%lld%lld", &x, &y, &k);
if(x == 0 && y == 0)
{
printf("0\n");
continue;
}
else if(x == 0 || y == 0)
{
if(k % max(x, y) == 0)printf("1\n");
else printf("0\n");
continue;
}
printf("%lld\n", min(k / x, k / y));
}
}