ACM新生选拔赛第三场题解
2016-10-14 21:22
330 查看
这是2016.10.14HRBUST软件学院ACM集训队第三次选拔赛的题解。
首先今天的题目与前两次比较的话是比较简单的,单由于是英文的原因,可能看起来会比较难一点。
废话不多说,切入正题。
A题:Average
题意:给你12个浮点数,让你求平均值
B题: Brainer
题意:比较大小然后按照规则输出
C题:Cow
就是求第一个数的每一位分别乘以第二个数的每一位的结果。
D题: Dirichlet
求一个序列中的第n个素数是多少
E题:Engage
简单题目,让求平局的比赛场数
思路:赢一场加3分,平一场双方每人加1分。只需计算所有人的总分,然后用场数乘以3-总分就OK 了。至于为什么的话自己思考下。
F题:Frog
找相同字母之间的最小的距离(无论是哪个字母)
G题:Game
比较难的推论题。
推出来后只有一个公式就OK了。
H题: Harness
给一个方阵,然后这个方阵你需要旋转90度 180度270 度,然后每一次旋转都要与最初的矩阵进行匹配,最后的输出为:在相同位置值一样的数的个数的最大值(旋转3次)
首先今天的题目与前两次比较的话是比较简单的,单由于是英文的原因,可能看起来会比较难一点。
废话不多说,切入正题。
A题:Average
题意:给你12个浮点数,让你求平均值
#include<stdio.h> int main() { double a[15]; while(~scanf("%lf",&a[0])) { double sum=a[0]; for(int i=1;i<12;i++) { scanf("%lf",&a[i]); sum+=a[i]; } printf("$%.2lf\n",sum/12.0); } return 0; }
B题: Brainer
题意:比较大小然后按照规则输出
#include<stdio.h> int main() { int t; scanf("%d",&t); while(t--) { int a,b; scanf("%d%d",&a,&b); if(a>=b) { printf("MMM BRAINS\n"); } else { printf("NO BRAINS\n"); } } return 0; }
C题:Cow
就是求第一个数的每一位分别乘以第二个数的每一位的结果。
#include<stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b)) { int s[105],s1[105],sum1=0,sum2=0,sum=0; while(a) { s[sum1++]=a%10; a/=10; } while(b) { s1[sum2++]=b%10; b/=10; } for(int i=0;i<sum1;i++) { for(int j=0;j<sum2;j++) { sum+=s[i]*s1[j]; } } printf("%d\n",sum); } return 0; }
D题: Dirichlet
求一个序列中的第n个素数是多少
#include<stdio.h> bool isprime(int n) { if(n==1) { return 0; } for(int i=2;i*i<=n;i++) { if(n%i==0) { return false; } } return true; } int f[1000005]; int main() { int n,m,k; while(~scanf("%d%d%d",&n,&m,&k)) { if(n==0&&m==0&&k==0) { break; } int sum=0; f[1]=n; //f[2]=m; int num=0; if(isprime(f[1])) { sum++; num=f[1]; } if(sum==k) { printf("%d\n",num); continue; } for(int i=2;i<=1000002;i++) { f[i]=f[1]+(i-1)*m; if(isprime(f[i])) { sum++; num=f[i]; } if(sum==k) { break; } } printf("%d\n",num); } return 0; }
E题:Engage
简单题目,让求平局的比赛场数
思路:赢一场加3分,平一场双方每人加1分。只需计算所有人的总分,然后用场数乘以3-总分就OK 了。至于为什么的话自己思考下。
#include<stdio.h> int main() { char a[205][205]; int num[205],n,m; while(~scanf("%d%d",&n,&m)) { if(n==0) { break; } int sum=0; for(int i=0; i<n; i++) { scanf("%s %d",&a[i],&num[i]); sum+=(num[i]); } printf("%d\n",m*3-sum); } return 0; }
F题:Frog
找相同字母之间的最小的距离(无论是哪个字母)
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main() { char a[1005]; int t,iCase=0; scanf("%d",&t); while(t--) { scanf("%s",a); int minn=10005; int l=strlen(a); for(int i=0;i<l;i++) { for(int j=i+1;j<l;j++) { if(a[i]==a[j]) { minn=min(minn,j-i); break; } } } if(minn==10005) { printf("Case #%d: -1\n",++iCase); } else printf("Case #%d: %d\n",++iCase,minn); } return 0; }
G题:Game
比较难的推论题。
推出来后只有一个公式就OK了。
#include <stdio.h> int main() { int T=0, p, n, q; while(~scanf("%d%d%d", &n, &p, &q)) { printf("Case %d: %.4f\n", ++T, (q+1.0)/(p+2.0)); } return 0; }
H题: Harness
给一个方阵,然后这个方阵你需要旋转90度 180度270 度,然后每一次旋转都要与最初的矩阵进行匹配,最后的输出为:在相同位置值一样的数的个数的最大值(旋转3次)
#include<stdio.h> #include<algorithm> using namespace std; int a[35][35],b[35][35],c[35][35],d[35][35],e[35][35]; int n; int judge1()//90度 { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { c[n-j+1][n-i+1]=b[i][n-j+1]; } } int re=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i][j]==c[i][j]) { re++; } } } return re; } int judge2() { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { d[n-j+1][n-i+1]=c[i][n-j+1]; } } int re=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i][j]==d[i][j]) { re++; } } } return re; } int judge3() { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { e[n-j+1][n-i+1]=d[i][n-j+1]; } } int re=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i][j]==e[i][j]) { re++; } } } return re; } int main() { while(~scanf("%d",&n)) { if(n==0) { break; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { scanf("%d",&b[i][j]); } } int sum=judge1(); sum=max(sum,judge2()); sum=max(sum,judge3()); printf("%d\n",sum); } return 0; }
相关文章推荐
- 2015NCHU第一届ACM新生选拔赛F题题解
- 2015NCHU第一届ACM新生选拔赛G题题解
- 2015NCHU第一届ACM新生选拔赛H题题解
- 2015NCHU第一届ACM新生选拔赛J题题解
- 2015NCHU第一届ACM新生选拔赛I题题解
- 2015NCHU第一届ACM新生选拔赛赛题说明
- 2016Hrbust软件学院ACM新生选拔赛(一)
- 2015NCHU第一届ACM新生选拔赛E题题解
- 2015NCHU第一届ACM新生选拔赛A题题解
- 2015NCHU第一届ACM新生选拔赛B题题解
- 2015NCHU第一届ACM新生选拔赛C题题解
- 2015NCHU第一届ACM新生选拔赛D题题解
- 湖南工业大学个人选拔赛第三场 解题报告(自己的)
- 20130712 【南华大学 ACM】 新生赛第三场 【B. A simple problem】
- 20130820 【南华大学 ACM】 个人选拔赛第二场 【C . DOBRI】
- 第一次ACM选拔赛
- HDOJ1696 Pie【二分】----武科大ACM暑期集训队选拔赛8题
- nyist——ACM新生牛刀小试 Round#1题解
- fzuacm 2017 新生寒假训练 7
- 第三场选拔赛