ACM第二次JKLMNOPQR
来源:互联网 发布:无限的未知知乎 编辑:程序博客网 时间:2024/06/06 08:38
J - 求数列的和
数列的定义如下:
数列的第一项为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(void){ int n,m; double sum,ai; while(scanf("%d%d",&n,&m)!=EOF) { //初始化设置:第1项 sum=n; ai=n; //数列求和 while(--m) {//更易懂的一般写法:for(i=2;?i<=m;i++) ai=sqrt(ai); sum+=ai; } //输出结果 printf("%.2f\n",sum); } return 0;}
K - 水仙花数
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如: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>void main(){ int n,m,i,temp,a,b,c,flag; while(scanf("%d%d",&m,&n)!=EOF) { flag=0; if(m>n) { temp=m; m=n; n=temp; } for(i=m;i<=n;i++) { a=i/100; b=i%100/10; c=i%10; if(i==a*a*a+b*b*b+c*c*c) { flag++; if(flag==1){ printf("%d",i); } else printf(" %d",i); } } if(flag==0) printf("no"); printf("\n"); }}
L - 多项式求和
多项式的描述如下:
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>void main(){ int m,n,i,k; double sum,j; scanf("%d",&n); while (n--) { scanf("%d",&m); sum=0; k=1; j=1.0; for (i=1;i<=m;i++) { sum=sum+j/k; k++; j=-j; } printf("%.2f\n",sum); }}
M - 素数判定
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y) (-39<=x<y<=50),
判定该表达式的值是否都为素数。
Input
输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。
Output
对于每个给定范围内的取值,如果表达式的值都为素数,则输出”OK”,否则请输出“Sorry”,每组输出占一行。
Sample Input
0 1
0 0
Sample Output
OK
#include <iostream>using namespace std;//判定一个数是否为素数,是素数返回1,否则返回0int check_prime_num(int arg){ if(arg<=0)return 0; else if(arg==1) return 0; else if(arg==2)return 1; else { for(int j=2; j<arg; j++) { //取余等于0,说明除了1和本身外还有其他因数,说明他不是素数,直接返回零 if(arg%j==0) return 0; } return 1; }}int main(void){ int x,y,temp,flag=0; while(cin>>x>>y) { //c=0,y=0就退出 if(x==0&&y==0)break; //判定在输入x,y之间的数后表达式结果为素数的个数 for(int i=x; i<=y; i++) { temp=i*i+i+41; if(check_prime_num(temp)==1) ++flag; } //如果表达式结果素数的个数和输入的个数想等的话,就说明表达式结果都为素数 if(flag==(y-x+1))cout<<"OK"<<endl; else cout<<"Sorry"<<endl; //必须清零,供下一个循环使用 flag=0; } return 0;}
N - 蟠桃记
喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!
什么问题?他研究的问题是蟠桃一共有多少个!
不过,到最后,他还是没能解决这个难题,呵呵^-^
当时的情况是这样的:
第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?
Input
输入数据有多组,每组占一行,包含一个正整数n(1<n<30)
表示只剩下一个桃子的时候是在第n天发生的。
Output
对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。
Sample Input
2
4
Sample Output
4
22
#include <iostream>using namespace std;int main(void){ int n,num=1;//最后一天蟠桃数为1,所以初始化num=1 while(cin>>n) { while(n>=2) { //用第二天的蟠桃数就可以得出第一天蟠桃数 num=(num+1)*2; n--; } cout << num << endl; num=1; } return 0;}
O - 青年歌手大奖赛_评委会打分
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100)
表示评委的人数,然后是n个评委的打分。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 974 100 99 98 97
Sample Output
98.0098.50
#include <stdio.h>void main(){ int n,i; double avg,max,min,sum,t; while (scanf("%d",&n)!=EOF) { sum = 0; max = 0; min = 0; for (i=0;i<n;i++) { scanf("%lf",&t); sum=sum+t; if (t>max) max=t; else if (t<min) min=t; } avg=(sum-min-max)/(n-2); printf("%.2f\n",avg); }}
P - 偶数求和
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2
4 2
Sample Output
3 6
3 7
#include <stdio.h>int main() { int n,m; while (scanf("%d %d",&n,&m)!=EOF) { int i,count = 0,tmp = 0,sum = 0; for (i=1;i<=n;i++) { count++; tmp += 2; //以2开始递增的 sum += tmp; if (i == n) //如果到了最后一个(不用管是否等于m)。 { printf("%d\n",sum / count); } else if (count == m) { printf("%d ",sum / m); //前面按m分开的。 count = 0; sum =0; } } } return 0; }
Q - 数据的交换输出
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0
Sample Output
1 2 3 4
1 4 3 2 5
#include <iostream>using namespace std;int main(){ int n,min,temp,j; while (cin>>n&&n!=0) { int *p=new int[n];//定义指针并指向用new动态分配大小为n的空间 for (int i=0;i<n;i++) { cin>>p[i]; if (i==0) { min=p[0]; j=0; } else { if (p[i]<min) { min=p[i]; j=i; } } } temp=p[0]; p[0]=min; p[j]=temp; for ( i=0;i<n;i++) { if (i!=0) { cout<<" ";//数与数之间用空格分开 } cout<<p[i]; } cout<<endl; delete p;//记着delete释放空间 } return 0;}
#include<iostream>using namespace std;const int M=100;int n;int m[M];int main(){ int i,a,a1=0,temp; while(cin>>n&&n>0) { for(i=0;i<n;i++) { cin>>m[i];} a=m[0];a1=0;//记录数组的下标,每次都要归零 for(i=0;i<n;i++) { if(m[i]<a) { a=m[i]; a1=i; } } temp=m[0]; m[0]=a; m[a1]=temp; for(i=0;i<n;i++) { if(i<n-1) cout<<m[i]<<" "; else cout<<m[i]<<endl; } } return 0;}
R - 字符串统计
对于给定的一个字符串,统计其中数字字符出现的次数。
Input
输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
Output
对于每个测试实例,输出该串中数值的个数,每个输出占一行。
Sample Input
2
asdfasdf123123asdfasdf
asdf111111111asdfasdfasdf
Sample Output
6
9
#include<stdio.h>#include<string.h> int main() { char a[100]; int i,l,count,n; scanf("%d",&n); getchar(); while(n--) { gets(a); count=0; l=strlen(a); for(i=0;i<l;i++) if(a[i]<='9'&&a[i]>='0') count++; printf("%d\n",count); } return 0; }
- ACM第二次JKLMNOPQR
- acm第二次测试
- Acm 第二次计蒜客杯题解
- ACM第二次ABCDEFGHI
- ACM第二次STUV
- ACM第二次WXYZ
- ACM第二次练习—1001
- ACM第二次练习—1002
- ACM第二次练习—1003
- ACM第二次练习—1004
- ACM第二次练习—1005
- ACM第二次练习—1008
- ACM第二次练习—1017
- ACM第二次练习—1011
- ACM第二次练习—1026
- ACM第二次练习—1019
- ACM第二次练习—1023
- acm菜鸟第二次刷题个人总结
- org.hibernate.LazyInitializationException
- SQL交换一列中数据的值(如男女性别)
- springmvc学习笔记(18)-json数据交互
- 【清北】【笔记】图论
- iOS【XCode9的新变化】
- ACM第二次JKLMNOPQR
- 用setInterval函数动态获取当前时间
- 简化Kubernetes应用部署工具-Helm简介
- C++ 指针
- C++ 数据抽象
- 电脑中必不可少的软件
- spring in action 学习笔记(二)通过构造器注入对象的引用
- PHP调试时print_r ,var_dump的区别
- 学习java核心卷1 前3章