1300 累加(1)
Description 对于给定的若干个整数, 请计算其累加和.
Input 测试用例有若干个绝对值不超过10^9 的整数, 输入直至遇到0 为止. Output 对于输入的整数, 在一行上输出其累加和. 注意: 在输出行上不能有前导空格, 也不能有后缀空格.
Sample Input 1 2 3 4 5 0
mple Output 15
answer(right)
#include
int main()
{
int x,n,i=0;
int s=0;
scanf("%d",&n);
scanf("%d",&x);
s=s+x;
i++;
}
printf("%d\n",s);
return 0;
}
1301累加(2)
Description 对于给定的若干个整数, 请计算其累加和.
Input 测试用例由两部分组成, 第一部分是一个值不超过109 的正整数n, 第二部分是n 个绝对值不超过109 的整数. Output 对于输入的n 个整数, 在一行上输出其累加和. 注意: 在输出行上不能有前导空格, 也不能有后缀空格.
Sample Input 5 1 2 3 4 5
Sample Output 15
answer #include
int main()
{
int x,n,i=0;
int s=0;
scanf("%d",&n);
while(i { scanf("%d",&x); s=s+x; i++; } printf("%d\n",s); return 0; } 1302代数平均数(1) Description 对于给定的若干个整数, 请计算其代数平均值. Input 测试用例有若干个绝对值不超过10^9 的整数, 输入直至遇到0 为止. Output 对于输入的整数, 在一行上输出其代数平均值. 注意: 只输出 6 位有效数字. 在输出行上不能有前导空格, 也不能有后缀空格. Sample Input 1 2 3 4 5 0 Sample Output 3 Answer #include main() { float x; int i=0; float s=0; double m; while(scanf("%f",&x),x!=0) { s=s+x; i++; } m=s/i; printf("%g\n",m); return 0; } 1303 带数平均数(2) Description 对于给定的若干个整数, 请计算其代数平均值. Input 测试用例由两部分组成, 第一部分是一个值不超过109的正整数n, 第二部分是n 个绝对值不超过109的整数. Output 对于输入的n 个整数, 在一行上输出其代数平均值. 注意: 只输出 6 位有效数字. 在输出行上不能有前导空格, 也不能有后缀空格. Sample Input 5 1 2 3 4 5 Sample Output 3 Answer #include int main() { int x,n,i,s=0; scanf("%d",&n); for(i=0;i { scanf("%d",&x); s+=x; } printf("%g",(double)s/n); scanf("%d",&x); return 0; } 1304 进制转换(1) Description 对于一个给定的十进制正整数, 请输出其二进制形式. Input 测试用例是一个值的范围在0 到232-1 的十进制整数. Output 对于输入的十进制整数, 在一行上输出其二进制形式. 注意: 不能输出无效的前导0. 在输出行上也不能有前导空白符或后缀空白符. Sample Input 10 Sample Output 1010 Answer #include int main() { int x,i=0,a[50]; scanf("%d",&x); while(x) { a[i++]=x%2; x/=2; } while(--i>=0) printf("%d",a[i]); return 0; } 1305进制转换(2) Description 对于一个给定的十进制非负整数, 请输出其二进制形式. Input 测试用例是一个值的范围在0 到232-1 的十进制整数. Output 对于输入的整数, 在一行上输出其32 位的二进制形式. 注意: 在输出行上不能有前导空白符或后缀空白符. Sample Input 10 Sample Output 00000000000000000000000000001010 Answer #include int main() { int x,i=0,j=31,a[50]; scanf("%d",&x); while(x) { a[i++]=x%2; x/=2; } for(;j>=i;j--) printf("%d",0); while(--i>=0) printf("%d",a[i]); return 0; } 1306 2n-1(1) Description 对于任意给定的非负整数n, 计算2n-1. Input 有多个测试用例. 每个测试用例是一个非负整数n. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出一个整数, 表示对应于输入的计算结果. 你可以假定这个结果在32-bits 无符号整数范围内. 注意: 输出行上不能有前导空格和后缀空格. Sample Input 1 2 3 4 Sample Output 1 3 7 15 Answer #include using namespace std; int power(int n) {int s=1; while(n--)s*=2;return s;} int main(){unsigned s,n;while(cin>>n) { s=power(n)-1;cout< return 0; } 1307 2n-1(2) Description 对于任意给定的非负整数n, 计算2n-1. Input 有多个测试用例. 每个测试用例是一个非负整数n. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出一个用C++ 的16 进制形式表示的整数, 表示对应于输入的计算结果. 你可以假定这个结果在32-bits 无符号整数范围内. 注意: 输出行上不能有前导空格和后缀空格. Sample Input 1 2 3 4 Sample Output 0x1 0x3 0x7 0xf answer #include int main() { int n,m; while(scanf("%d",&n)!=EOF) { m=1; while(n--) m*=2; printf("0x%x\n",m-1); } return 0; } 1308 字母大小写转换(1) Description 对于任意给定的字母字符, 请给出其大写形式. Input 有多个测试用例. 每个测试用例是一个字母字符. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出一个字母字符, 表示对应于输入的字母字符的大写形式. 注意: 输出行上不能有前导空格和后缀空格. Sample Input a B Sample Output AB Answer #include using namespace std; int main() { char c; while(cin>>c) { if(c>='a'&&c<='z') c=c-32; cout< } return 0; } 1309字母大小写转换(2) Description 对于任意给定的字母字符, 请给出其小写形式. Input 有多个测试用例. 每个测试用例是一个字母字符. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出一个字母字符, 表示对应于输入的字母字符的小写形式. 注意: 输出行上不能有前导空格和后缀空格. Sample Input aB Sample Output ab answer #include using namespace std; int main() { char c; while(cin>>c) { if(c>='A'&&c<='Z') c=c+32; cout< } return 0; } 1310字母大小转换(3) 题目类似前者aB→Ab answer#include using namespace std; int main() { char c; while(cin>>c) { if(c>='A'&&c<='Z') c=c+32; else if(c>='a'&&c<='z') c=c-32; cout< } 1311数字和 Description 对于给定的一个正整数, 请给出其十进制数字的数字和. Input 测试用例是一个位数最多可达到10000 位的十进制形式正整数. Output 对于输入的整数, 在一行上输出其十进制数字和. 注意: 输出行上不能有前导空格和后缀空格. Sample Input 12345 Sample Output 15 answer 法1 #include #include main() { int i,n,m,s=0; char ch[10001]; scanf("%s",ch); n=strlen(ch); for(i=0;i { m=ch[i]-48; s=s+m; } printf("%d",s); return 0; } 法2 #include int main() { char a[10000]; int s=0,i; gets(a); for(i=0;a[i]!='\0';i++) { s=s+(a[i]-48); } printf("%d ",s); return 0; } 1313多项式的值 Description f(x) = a n*x n + a n-1*x n-1 + ... + a1*x + a0称为关于x 的一个多项式, 其中a n, a n-1, ... , a1, a0, x 为实数. 本题要求对于给定的x 和多项式f(x) = a n*x n + a n-1*x n-1 + ... + a1*x + a0, 计算它的值f(x). Input 测试用例由一个实数x, 一个正整数n 和接下来的n+1 个实数a n, a n-1, ... , a1, a0组成. Output 对于测试用例, 在一行上输出一个实数, 表示f(x) 的值. 注意: 输出行上不能有前导空格和后缀空格. Sample Input 32111Sample Output 13 Hint 可以使用Honer 算法计算多项式的值. answer #include using namespace std; int main(){ double a[40],x,s; long n,i,j; cin>>x; cin>>n; s=0; for(i=n;i>=0;i--) cin>>a[i]; for(i=0;i<=n;i++) { for(j=1;j<=i;j++) {a[i]*=x;} s+=a[i];} cout< return 0; } 1314唯一相异数(1) Description 长度为n 的整数序列a1, a2, ..., a n中, 有n-1 个数是相同的, 而剩下的那个数则与之相异. 请求出这个唯一的相异数. Input 有多个测试用例. 每个测试用例的第一个数是n(n>2), 表示整数序列的长度. 接下来是n 个32-bits 整数. 输入直到n 等于0 为止. Output 对于每个测试用例, 在一行上输出一个整数, 表示输入的n 长序列中的唯一相异数. 注意: 输出行不能有前导空格或后缀空格. Sample Input 5121110 Sample Output 2 answer #include int main() { int order,n,a,b,c,i,j; while(scanf("%d",&n) && n) { scanf("%d%d",&a,&b); for(i=1;i<=n-2;i++) { scanf("%d",&c); if(a!=b && a!=c) { order=a; break; } else if(b!=a && b!=c) { order=b; break; } else if(c!=a && c!=b) { order=c; break; } a=b; b=c; } printf("%d\n",order); for(j=1;j<=n-i-2;j++) { scanf("%d",&a); } } return 0; } 1315唯一相异数(2) Description 长度为n 的整数序列a1, a2, ..., a n中, 有n-1 个数是相同的, 而剩下的那个数则与之相异. 请求出这个唯一的相异数在序列中的序号. Input 有多个测试用例. 每个测试用例的第一个数是n(n>2), 表示整数序列的长度. 接下来是n 个32-bits 整数. 输入直到n 等于0 为止. Output 对于每个测试用例, 在一行上输出一个整数, 表示输入的n 长序列中的唯一相异数在序列中的序号. 注意: 输出行不能有前导空格或后缀空格. Sample Input 5121110Sample Output 2 answer #include int main() { int order,n,a,b,c,i,j; while(scanf("%d",&n) && n) { scanf("%d%d",&a,&b); for(i=1;i<=n-2;i++) { scanf("%d",&c); if(a!=b && a!=c) { order=i; break; } else if(b!=a && b!=c) { order=i+1; break; } else if(c!=a && c!=b) { order=i+2; break; } a=b; b=c; } printf("%d\n",order); for(j=1;j<=n-i-2;j++){scanf("%d",& a);} } return 0; } 1316数字根 Description 众所周知, 一个正整数n 的数字和dsum(n) 仍然是一个正整数. 如果这个数字和不是一个一位数, 那么我们还可以求它的数字和. 将这个过程一直进行下去, 直至得到一位数为止. 这个最后得到的一位数称为n 的“数字根". 如: n=24. 其数字和2+4=6 是一个一位数, 所以, 24 的数字根是 6. 又如: n=39. 其数字和3+9=12 不是一位数, 故继续计算12 的数字和1+2=3. 于是, 39 的数字根是 3. Input 测试用例占一行, 包含一个有多至1000 个数字的十进制正整数. Output 对于测试用例的输入, 在一行上输出其数字根. 注意: 输出行上不能有前缀或后缀空格. Sample Input 39 Sample Output 3 answer #include #include int main() { char num[10001]; int n,i,root,sum; while(scanf("%s",num)!=EOF) { sum=0; n=strlen(num); for(i=0;i sum+=num[i]-'0'; root=sum%9; if(root==0) root=9; printf("%d\n",root); } return 0; } 1317小学四则运算 Description 这个题目太直接了, 所以我也不想在这里多废话了. Input 有多个测试用例. 每个测试用例占一行, 包含一个形如“A +B =” 的加、减、乘、除四则算术表达式, 其中A, B 是最多3 位的十进制正整数. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出测试用例所给出的表达式的结果. 注意: 输出行上不能有前缀或后缀空格. Sample Input 2 + 4 = 3 / 9 = Sample Output 60 answer #include main() { int a,b; char ch1; while(scanf("%d%c%d=",&a,&ch1,&b)!E OF) { if(a<=1000&&b<=1000) { switch(ch1) { case'+':printf("%d\n",a+b);break; case'-':printf("%d\n",a-b);break; case'*':printf("%d\n",a*b);break; case'/':printf("%d\n",a/b);break; } } } return 0; } 1318数学函数值 Description 这个题目太直接了, 所以我也不想在这里多废话了. Input 有多个测试用例. 每个测试用例占一行, 包含一个形如“F(x)” 的函数表达式, 其中 F 是一个C++ 的标准三角函数、对数函数、指数函数名, x 是一个正整数. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出测试用例所给出的表达式的结果. 注意: 输出行上不能有前缀或后缀空格. 你可以假定所有输出的实数的绝对值都不超过100. Sample Input sin(1) cos(1) Sample Output 0.841471 0.540302 Hint C++ 的三角函数有sin, cos, tan, 对数函数有log, log10, 指数函数有exp. answer #include #include using namespace std; int main() { char a,b,c,d,e,f,g; int x; while(cin>>a>>b>>c>>d) switch(a) { case 's': cin>>x>>e; cout< case 't': cin>>x>>e; cout< case 'c': cin>>x>>e; cout< case 'e': cin>>x>>e; cout< case 'l': if(d=='1') { cin>>e>>f>>x>>g; cout< else { cin>>x>>e; cout< } } return 0; } 1319最大值 Description 对于给定的n 个整数, 请计算其最大值. Input 有多个测试用例. 每个测试用例由两行组成. 第一行是一个不超过1000 的正整数n. 第二行是n 个由空白符分隔的32-bits 整数. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出一个整数, 表示对应输入的n 个整数的最大值. 注意: 输出行不能有前缀或后缀空格. Sample Input 5 1 2 3 4 5 3 2 13 1 Sample Output513 answer #include int main() { int a[1000],n,max,i; while (scanf("%d",&n)!=EOF) { for(i=0;i scanf("%d",&a[i]); max=a[0]; for(i=1;i if(a[i]>max) min=a[i]; printf("%d\n",max); } } 1320最小值 Description 对于给定的n 个整数, 请计算其最小值. Input 有多个测试用例. 每个测试用例由两行组成. 第一行是一个不超过1000 的正整数n. 第二行是n 个由空白符分隔的32-bits 整数. 输入直至没有数据为止. Output 对于每个测试用例, 在一行上输出一个整数, 表示对应输入的n 个整数的最小值. 注意: 输出行不能有前缀或后缀空格. Sample Input 5 1 2 -3 4 5 3 2 13 1 Sample Output -3 1 answer #include int main() { int a[1000],n,min,i; while (scanf("%d",&n)!=EOF) {for(i=0;i scanf("%d",&a[i]); min=a[0]; for(i=1;i if(a[i] min=a[i]; printf("%d\n",min);} } 1321简单排列(1) Description 对于给定的n 个整数, 请将其从小到大输出. Input 有多个测试用例. 每个测试用例由两行组成. 第一行是一个不超过1000 的正整数n. 第二行是n 个由空白符分隔的32-bits 整数. 输入直至没有数据为止. Output 对于每个测试用例的输入数据, 请将其从小到大排序后在一行上输出. 输出的数据由单一个空格分隔. 注意: 输出行不能有前缀或后缀空格. Sample Input 5 1 2 -3 4 5 3 2 13 1 Sample Output -3 1 2 4 5 1 2 13 answer #include #define N 1000 int main() { int a[N],i,j,flag,temp,n; while(scanf("%d",&n)!=EOF) { flag=0; for(i=0;i scanf("%d",&a[i]); for(i=0;i for(j=0;j { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1; } if(flag=0) break; } for(i=0;i printf("%d ",a[i]); printf("%d\n",a[i]); } return 0; } 1322简单排列(2) Description 对于给定的n 个整数, 请将其从大到小输出. Input 有多个测试用例. 每个测试用例由两行组成. 第一行是一个不超过1000 的正整数n. 第二行是n 个由空白符分隔的32-bits 整数. 输入直至没有数据为止. Output 对于每个测试用例的输入数据, 请将其从大到小排序后在一行上输出. 输出的数据由单一个空格分隔. 注意: 输出行不能有前缀或后缀空格. Sample Input 5 1 2 -3 4 5 3 2 13 1 Sample Output 5 4 2 1 -3 13 2 1 answer #include #define N 1000 int main() { int a[N],i,j,flag,temp,n; while(scanf("%d",&n)!=EOF) { flag=0; for(i=0;i scanf("%d",&a[i]); for(i=0;i for(j=0;j { if(a[j] { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1; } if(flag=0) break; }