2006
Problem Description 给你n个整数,求他们中所有奇数的乘积。
Input 输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。
Output 输出每组数中的所有奇数的乘积,对于测试实例,输出一行。
Sample Input
3 1 2 3
4 2 3 4 5
Sample Output
3
15
#include <stdio.h>
int main()
{
int inputnum;
while(scanf("%d",&inputnum)!=EOF){
int product = 1;
for(;inputnum!=0;inputnum--){
int a;
scanf("%d",&a);
if(a%2==1){
product = product*a;
}
}
printf("%d\n",product);
}
return 0;
}
2007
Problem Description 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
Input 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。
Output 对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。你可以认为32位整数足以保存结果。
Sample Input
1 3
2 5
Sample Output
4 28
20 152
要点:判断两个数的大小
#include <stdio.h>
int main()
{
int a,b,temp;
while(scanf("%d %d",&a,&b)!=EOF){
if(b<a){
temp = a;
a = b;
b = temp;
}
int evensum=0, oddsum = 0;
for(;a!=b+1;a++){
if(a%2==1){
oddsum = oddsum + a*a*a;
}
else if(a%2==0){
evensum = evensum + a*a;
}
}
printf("%d %d\n",evensum, oddsum);
}
return 0;
}
2008
Problem Description 统计给定的n个数中,负数、零和正数的个数。
Input 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
Output 对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
Sample Input
6 0 1 2 3 -1 0
5 1 2 3 4 0.5
0
Sample Output
1 2 3
0 0 5
#include <stdio.h>
int main()
{
int inputnum;
while(scanf("%d",&inputnum)!=EOF&&inputnum){
int negative=0, zero=0, positive=0;
for(;inputnum!=0;inputnum--){
double a;
scanf("%lf",&a);
if(a==0){
zero=zero+1;
}
else if(a<0){
negative=negative+1;
}
else{
positive=positive+1;
}
}
printf("%d %d %d\n",negative,zero,positive);
}
return 0;
}
2009
Problem Description 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
Input 输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
Output 对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
Sample Input
81 4
2 2
Sample Output
94.73
3.41
#include <stdio.h>
#include <math.h>
int main()
{
int item, num;
while(scanf("%d %d",&item, &num)!=EOF){
double sum = (double)item;
double nowitem = (double)item;
for(;num!=1;num--){
nowitem = sqrt(nowitem);
sum = sum + nowitem;
}
printf("%.2f\n",sum);
}
return 0;
}
2010
Problem Description “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
Input 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
要点:注意输出...
#include <stdio.h>
int main()
{
int m, n;
while(scanf("%d %d",&m, &n)!=EOF){
int count = 0;
for(;m!=n+1;m++){
int third = m%10;
int remain = m/10;
int first = remain/10;
int second = remain%10;
if(m==first*first*first+second*second*second+third*third*third){
if(count>0){
printf(" ");
}
printf("%d",m);
count++;
}
}
if(count==0){
printf("no");
}
printf("\n");
}
return 0;
}
2011
Problem Description 多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... 现在请你求出该多项式的前n项的和。
Input 输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。
Output 对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。
Sample Input
2
1 2
Sample Output
1.00
0.50
#include <stdio.h>
int main()
{
int inputnum;
scanf("%d",&inputnum);
for(;inputnum!=0;inputnum--){
int m;
scanf("%d",&m);
double sum = 0.0;
int count=1;
for(;count!=m+1;count++){
if(count%2==1){
sum = sum+1.0/count;
}
else{
sum = sum-1.0/count;
}
}
printf("%.2f\n",sum);
}
return 0;
}
2039
Problem Description 给定三条边,请你判断一下能不能组成一个三角形。
Input 输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000;
Output 对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。
Sample Input
2
1 2 3
2 2 2
Sample Output
NO
YES
#include <stdio.h>
int main()
{
int inputnum;
scanf("%d",&inputnum);
for(;inputnum!=0;inputnum--){
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
if((a<b+c)&&(b<a+c)&&(c<a+b)){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}