第一题:
问题 D: 字符串反转
题目描述
小C很喜欢倒着写单词,现在给你一行小C写的文本,你能把每个单词都反转并输出它们吗?
输入
输入包含多组测试样例。第一行为一个整数T,代表测试样例的数量,后面跟着T个测试样例。
每个测试样例占一行,包含多个单词。一行最多有1000个字符。
输出
对于每一个测试样例,你应该输出转换后的文本。
样例输入
3
olleh !dlrow
I ekil .bulcmca
I evol .mca
样例输出
hello world!
I like acmclub.
I love acm.
第二题
问题 G: 丑数
题目描述
如果一个数的素因子只包含2,3,5或7,那么我们把这种数叫做丑数。序列1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27…展示了前20个丑数。
请你编程寻找这个序列中的第n个元素。
输入
输入包含多组测试数据。每组输入为一个整数n(1<=n<=5842),当n=0时,输入结束。
输出
对于每组输入,输出一行“The nth humble number is number.”。里面的n由输入中的n值替换,“st”,“nd”,“rd”和“th”这些序数结尾的用法参照输出样例。
样例输入
1
2
3
4
11
12
13
21
22
23
100
1000
5842
0
样例输出
The 1st humble number is 1.
The 2nd humble number is 2.
The 3rd humble number is 3.
The 4th humble number is 4.
The 11th humble number is 12.
The 12th humble number is 14.
The 13th humble number is 15.
The 21st humble number is 28.
The 22nd humble number is 30.
The 23rd humble number is 32.
The 100th humble number is 450.
The 1000th humble number is 385875.
The 5842nd humble number is 2000000000.
第三题
问题 E: 相对分子质量
题目描述
小明最近迷上了化学,几乎天天在实验室做实验,但是很多实验生成的化学产物的相对分子质量令他很困惑,不知如何计算,请你编程帮他计算。
输入
输入的第一行是一个正整数n,表示有n组测试数据。
接下来n行每行输入一个字符串,表示某个分子式,分子式中只包含大写字母和数字。
注意:
输入数据只包含8种元素,而这8种元素的相对原子质量如下:
H(1),C(12),N(14),O(16),F(19),P(31),S(32),K(39)。
输出
对于每组输入,输出相对分子质量。
样例输入
4
H2O
KOH
CH4
SO2
样例输出
18
56
16
64
第四题
问题H:最伟大的LCM
题目描述
老师给了你一个正整数N,并让他从1到N中选择任意三个数字,
这可能是他们最低公倍数的最大数。
提示: 常见倍数 是一个数字,它是两个或更多数字的倍数。3和4的公倍数是 0,12,24 … 两个数的最小公倍数(LCM)是两者的倍数的最小数(非零)。
输入
请输入 正整数N.
输出
输出一个整数,表示您找到的最小公倍数。
样例输入
9
2
样例输出
504
2
提示
1 <= N <= 10 6。
第五题
问题 B: 高等数学
题目描述
yy正在学高数呢, 他听说: “从前有一棵树, 叫高树, 上面挂了很多人…”, yy偏偏不信这个邪
他看到了一个很酷的题目, 他想让你给他说说答案是多少
求
ps: 上限分别是100, 50, 10
输入
无
输出
题目描述中算式的值,并保留4位小数。
请注意行尾输出换行。
第六题
问题 C: 比较数组
题目描述
yy发现在编程语言中, 只有变量之间可以比大小, 数组却不可以, 他决心编写一个比较数组大小的算法!
两个数组a和b,各有10个元素,将它们对应的逐个比较(即a[0]与b[0]比,a[1]与b[1]比,余此类推)。如果a数组中的元素大于b数组中的相应元素的数目多于b数组中元素大于a数组中相应元素的数目(例如a[i]>b[i]6次,而b[i]>a[i]3次),则判定a数组大于b数组。
请写一个程序判断a数组和b数组的大小关系,并统计出两个数组对应元素大于、等于、小于的次数。
输入
有两行,每一行有10个用空格隔开的整数,表示a数组和b数组。
输出
首先在第一行内输出a数组中元素与b数组中对应元素的大于、等于、小于的次数,用空格隔开。
若a数组大于b数组,则在第二行中输出“a>b”;若a数组小于b数组,则输出“a 请注意不需要输出引号,并请注意行尾输出换行。
样例输入
1 3 5 7 9 8 6 4 2 0
5 3 8 9 -1 -3 5 6 0 4
样例输出
4 1 5
a 第七题
题目描述
不知道你听没听说过这样一个脑筋急转弯。
2元可以买一瓶汽水(玻璃瓶装的),因为瓶身是玻璃瓶的比较贵,所以两个瓶身可以换一瓶汽水。你现在有4元钱,问最多能喝到多少瓶汽水?
答案是4瓶。一开始先用4元钱买两瓶汽水喝掉,再用这两瓶的汽水的瓶身换一瓶喝到,最后还剩一个瓶身,这个时候再朝小卖部的老板借一个瓶身。换一瓶汽水喝掉之后再还给他一个瓶身。
现在问题来了,一开始你有n元钱,然后你最多可以向老板借一个瓶身(注意要还的),问你最多能喝到多少瓶汽水?
输入描述:
第一行是一个正整数T(T<=100)表示有T组案例。
对于每组案例,输入一个正整数(1<=n<=10^100)。
(请注意输入数据的范围,n有10的100次方那么大)
输出描述:
对于每组案例,输出一行一个正整数表示最多能够喝到的汽水数目
示例1
输入
3
1
2
1000000000000000000000000000000
输出
0
2
1000000000000000000000000000000
说明
1块钱不能购买汽水,所以共喝到0瓶
2块钱先买一瓶汽水,喝完以后再借一个空瓶,换一瓶,喝掉以后还给老板。所以一共可以喝到2瓶。
备注:
请选用合理的数据类型。
int 型的最大值为2147483647。
long long 型的最大值为9223372036854775807。
float的有效数位为6位。
double的有效数位为12位。
所以本题无法使用以上数据类型处理。
第八题/
题目描述
小w与tokitsukaze一起玩3ds上的小游戏,现在他们遇到了难关。
他们得到了一个数列,通关要求为这个数列的和为0,并且只有一次改变一个数的符号的机会(正数变成负数,负数变成正数)。
请问小w与tokitsukaze能否通关,如果能,请输出有多少个数符合要求,如果不能,请输出-1。
输入描述:
第一行包括一个正整数n(1≤n≤10^5),表示这个数列有n个数。
接下来一行有n个数x (-100≤x≤100),表示数列(数列的和保证不等于0)。
输出描述:
输出有多少个符合要求的数,如果没有,请输出-1。
示例1
输入
5
1 3 -5 3 4
输出
2
说明
只要把一个3变成-3,数列的和就变为0。数列里总共有两个3,所以有2个符合要求的数。
示例2
输入
4
1 2 4 8
输出
-1
第九题
母牛的故事
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0
输出
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
样例输入
2
4
5
0
样例输出
2
4
6
第十题
题目描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制回文数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
第十一题
质数中的质数(质数筛法)
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
收起
输入
输入一个数N(N <= 10^6)
输出
输出>=N的最小的质数中的质数。
输入样例
20
输出样例
31
第一题
#include"stdio.h"
#include"string.h"
#define max 1000
int main()
{
int i,n,j,k,m,x;
char str[max]={0};
while(scanf("%d",&n)!=EOF)
{
getchar();
for(i=0;i
gets(str);
x=strlen(str);
m=-1;
for(j=0;j<=x;j++)
{
if(str[j]’ '||str[j]’\0’)
{
for(k=j-1;k>m;k–)
printf("%c",str[k]);
if(str[j]!=’\0’)
printf(" “);
m=j;
}
}
printf(”\n");
}
}
return 0;
}
第二题
#include"stdio.h"
int NB(int a,int b,int c,int d);
int main()
{
int a,b,c,d,w[10000];
int n,i;
w[1]=a=b=c=d=1;
for(i=2;i<10000;i++)
{
w[i]=NB(a2,b3,c5,d7);
if(w[i]a2)
a++;
if(w[i]==b3)
b++;
if(w[i]c5)
c++;
if(w[i]==d7)
d++;
}
while(scanf("%d",&n))
{
if(n0)
break;
if(n%101&&n%100!=11)
{
printf(“The %dst humble number is %d.\n”,n,w[n]);
}
else if(n%102&&n%100!=12)
{
printf(“The %dnd humble number is %d.\n”,n,w[n]);
}
else if(n%103&&n%100!=13)
{
printf(“The %drd humble number is %d.\n”,n,w[n]);
}
else
{
printf(“The %dth humble number is %d.\n”,n,w[n]);
}
}
return 0;
}
int NB(int a,int b,int c,int d)
{
if(a>b)
a=b;
if(a>c)
a=c;
if(a>d)
a=d;
return a;
}
第三题
#include
int main()
{
int n,i,x=0;
int tent=0;
char a[10][10];
scanf("%d",&n);
getchar();
for(i=0;i
gets(a[i]);
}
for(i=0;i
x=tent=0;
while(a[i][x]!=’\0’)
{
if(a[i][x]‘H’)
{
if(a[i][x+1]>=‘1’&&a[i][x+1]<=‘9’)
{
tent+=(a[i][x+1]-48);//48对应0
}
else
{
tent++;
}
x++;
}
else if(a[i][x]‘C’)
{
if(a[i][x+1]>=‘1’&&a[i][x+1]<=‘9’)
{
tent+=(12*(a[i][x+1]-48));
}
else
{
tent+=12;
}
x++;
}
else if(a[i][x]‘N’)
{
if(a[i][x+1]>=‘1’&&a[i][x+1]<=‘9’)
{
tent+=14*(a[i][x+1]-48);
}
else
{
tent+=14;
}
x++;
}
else if(a[i][x]‘O’)
{
if(a[i][x+1]>=‘1’&&a[i][x+1]<=‘9’)
{
tent+=16*(a[i][x+1]-48);
}
else
{
tent+=16;
}
x++;
}
else if(a[i][x]‘F’)
{
if(a[i][x+1]>=‘1’&&a[i][x+1]<=‘9’)
{
tent+=19*(a[i][x+1]-48);
}
else
{
tent+=19;
}
x++;
}
else if(a[i][x]‘P’)
{
if(a[i][x+1]>=‘1’&&a[i][x+1]<=‘9’)
{
tent+=31*(a[i][x+1]-48);
}
else
{
tent+=31;
}
x++;
}
else if(a[i][x]‘S’)
{
if(a[i][x+1]>=‘1’&&a[i][x+1]<=‘9’)
{
tent+=32*(a[i][x+1]-48);
}
else
{
tent+=32;
}
x++;
}
else if(a[i][x]‘K’)
{
if(a[i][x+1]>‘1’&&a[i][x+1]<=‘9’)
{
tent+=39*(a[i][x+1]-48);
}
else
{
tent+=39;
}
x++;
}
else
{
tent=tent+0;
x++;
}
}
printf("%d\n",tent);
}
return 0;
}
第四题
#include"stdio.h"
int main()
{
int n;
scanf("%d",&n);
if(n>=3)
{
if(n%2!=0)
{
printf("%d\n",n*(n-1)(n-2));
return 0;
}
else
printf("%d\n",n(n-1)(n-3));
}
if(n<=2)
{
printf(“n\n”);
return 0;
}
}
第五题
#include"stdio.h"
int main()
{
int i,a,b;
float c=0;
a=b=0;
for(i=1;i<=100;i++)
{
a+=i;
}
for(i=1;i<=60;i++)
{
b+=ii;
}
for(i=1;i<=10;i++)
{
c+=1.0/float(i);
}
printf("%.4f\n",float(a+b+c));
return 0;
}
第六题
#include"stdio.h"
int main()
{
int x,y,z,i;
x=y=z=0;
int a[10],b[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<10;i++)
{
if(a[i]>b[i])
x++;
if(a[i]b[i])
y++;
if(a[i] z++;
}
printf("%d %d %d\n",x,y,z);
if(x>z)
printf(“a>b\n”);
else
printf(“a return 0;
}
第七题
#include
#include
int main()
{
unsigned int n;
int i,j;
char q,a[1000];
scanf("%d", &n);
for (i=0;i
scanf("%s",a);
q=strlen(a);
j=a[q-1];
if(j%2
a[q-1]=a[q-1]-1;
printf("%s\n",a);
}
return 0;
}
第八题
#include"stdio.h"
int main()
{
int a[10];
int n,i,j,count,t;
count=t=0;
scanf("%d",&n);
for(i=0;i
scanf("%d",&a[i]);
}
for(i=0;i
a[i]=-1a[i];
for(j=0;j
if(i=j)
t+=-1
else
t+=a[j];
}
if(t0)
count++;
}
if(count0)
count=-1;
printf("%d",count);
return 0;
}
第九题
#include"stdio.h"
int main()
{
int i,count=0;
int a[100],b[10];
for(i=0;;i++)
{
scanf("%d",&b[i]);
if(b[i]0)
break;
else
count++;
}
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;
for(i=5;i<100;i++)
{
a[i]=a[i-1]+a[i-3];
}
for(i=0;i
printf("%d\n",a[b[i]]);
}
return 0;
}
第十题
#include
int main()
{
int n,i,j;
int a,b,c,d,e,f;
scanf("%d",&n);
for (i=10000;i<=99999;i++)
{
a=i/10000;
b=i%10000/1000;
c=i%1000/100;
d=i%100/10;
e=i%10;
if (a
{
printf("%d\n",i);
}
}
for (j=100000;i<=999999;j++)
{
a=j/100000;
b=j%100000/10000;
c=j%10000/1000;
d=j%1000/100;
e=j%100/10;
f=j%10;
if (af&&be&&cd&&a+b+c+d+e+fn)
{
printf("%d\n",j);
}
}
return 0;
}
第十一题
#include
#include
int A(int n);
int main()
{
int n,i,x;
scanf("%d",&n);
for(x=0,i=2;;i++)
{
if(A(i)1)
{
x++;
}
if(A(x)1&&i>=n)
{
printf("%d",i);
break;
}
}
return 0;
}
int A(int n)
{
int i;
int t=0;
if(n2||n3)
{
return 1;
}
if(n1)
{
return 0;
}
for(i=2;i<=sqrt(n);i++)
{
if(n%i0)
{
t=1;
return 0;
}
}
if(t!=1)
{
return 1;
}
}