PTA编程题(11~15)
1011 A+B 和 C (15 分)
题意思路坑点代码总结 1012 数字分类 (20 分)
题意思路坑点代码总结 1013 数素数 (20 分)
题意思路坑点代码总结 1014 福尔摩斯的约会 (20 分)
题意思路坑点代码总结 1015 德才论 (25 分)
题意思路坑点代码总结
1011 A+B 和 C (15 分)题目链接
题意思路输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。
坑点1.请判断 A+B 是否大于 C。
代码1.无。
#include#include #include #include using namespace std; const int N=10+5; int num[N]; //int ans[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { double a,b,c; cin>>a>>b>>c; if((a+b)>c) { num[i]=1; } if((a+b)<=c) { num[i]=0; } } //cout<<"Case #"; for(int i=1;i<=n;i++) { if(num[i]==0) { cout<<"Case #"< 总结 1012 数字分类 (20 分)签到题。
题目链接
题意思路每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
对给定的 N 个正整数按题目要求输出。数字间以空格分隔,但行末不得有多余空格。坑点1.按照题目要求进行判断就行了
代码1.注意输出格式。
#include总结using namespace std; int main(){ int sum1 = 0,sum2 = 0,sum4 = 0;//sum和cnt的下角标和A的下标相对应 int cnt2 = 0,cnt3 = 0,cnt4 = 0,cnt5 = 0; int n; cin >> n; int k = -1;//用于交错求和 int num; int maxn = 0; while(n--){ cin >> num; if(num%5==0&&num%2==0){ sum1 += num; }else if(num%5==1){ k *= -1;//交错求和 cnt2++; sum2 += k*num; }else if(num%5==2){ cnt3++; }else if(num%5==3){ cnt4++; sum4 += num; }else if(num%5==4){ if(num>maxn) maxn = num; } } if(sum1!=0) { printf("%d",sum1); } else { printf("N"); } if(cnt2!=0)//注意这里,不能写sum2 { printf(" %d",sum2); } else { printf(" N"); } if(cnt3!=0) { printf(" %d",cnt3); } else { printf(" N"); } if(cnt4!=0) { printf(" %.1lf",sum4*1.0/cnt4); } else { printf(" N"); } if(maxn!=0) { printf(" %d",maxn); } else { printf(" N"); } return 0; } 1013 数素数 (20 分)签到题
题目链接
题意思路输入在一行中给出 M 和 N,其间以空格分隔。
输出所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。坑点1.现任给两个正整数 M≤N≤10的4次方,
代码1.注意素数的判断
#include总结#include //判断素数 int xu(int x) { int flag = 1; for(int i=2;i<=sqrt(x);i++) { if(x%i == 0) { flag=0; } } return flag; } int main() { int m,n; scanf("%d %d", &m, &n); int num[10000]; num[0]=2; int j=1; for(int i=3;j<10000;i++) { if(xu(i)) { num[j] = i; j++; } } int k=1; for(int i=m;i<=n;i++) { if(k%10 != 0 && i!=n) { printf("%d ", num[i-1]); } else if(k==n) { printf("%d", num[i-1]); } else { printf("%dn", num[i-1]); } k = k+1; } } 1014 福尔摩斯的约会 (20 分)素数的判断,签到题。
题目链接
题意思路输入在 4 行中分别给出 4 个非空、不包含空格、且长度不超过 60 的字符串。
在一行中输出约会的时间,格式为 DAY HH:MM,其中 DAY 是某星期的 3 字符缩写,即 MON 表示星期一,TUE 表示星期二,WED 表示星期三,THU 表示星期四,FRI 表示星期五,SAT 表示星期六,SUN 表示星期日。题目输入保证每个测试存在唯一解。1.字符相等,而且字符必须是大写字母,且必须在’A’ ~ ‘G’ 之间。(星期几)
2.字符相等,而且字符必须在’A’ ~ ‘N’ 或 ‘0’ ~ '9’之间 (小时)
坑点3.字符相等, 而且必须是字母。(分钟)
代码1.输出格式的注意。
#include总结#include #include using namespace std; int main() { int i,flag=0; char s[7][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"}; char s1[60],s2[60],s3[60],s4[60]; scanf("%s",s1); scanf("%s",s2); scanf("%s",s3); scanf("%s",s4); for(i=0;(s1[i]!='')&&(s2[i]!='');i++) { if(s1[i]==s2[i]){ if(flag==0&&s1[i]>='A'&&s1[i]<='G') { printf("%s",s[s1[i]-'A']); flag=1; continue; } if(flag==1) { if(s1[i]>='0'&&s1[i]<='9') { printf(" 0%c",s1[i]); break; } if(s1[i]>='A'&&s1[i]<='N') { printf(" %d",s1[i]-'A'+10); break; } } } } for(i=0;(s3[i]!='')&&(s4[i]!='');i++) { if(s3[i]==s4[i]&&s3[i]>='A'&&s3[i]<='z') { printf(":%02d",i); break; } } return 0; } 1015 德才论 (25 分)自己没有做出来的原因是自己的对于字符串的使用不十分的熟练。
题目链接
题意思路输入第一行给出 3 个正整数
输出第一行首先给出达到最低分数线的考生人数 M,随后 M 行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。坑点1.录取的学生分为4类:2.第一类学生:如果德分>=H&&才分>=H,按照德分才分的总分降序排列录取,若总分相同,则按德分降序,若德分并列,则按准考证号升序排列。3.第二类学生:如果德分>=H&&才分
=才分,按照德分才分的总分降序排列录取,若总分相同,则按德分降序,若德分并列,则按准考证号升序排列,三类学生排在二类学生之后。
第四类学生:不满足第一二三类的条件,但满足录取条件的学生。排在第三类学生之后。代码1.建议使用sort排序,不然的话可能会超时。
#include#include using namespace std; struct student { int a; int d; int c; int sum; }stu[100000],stu1[100000],stu2[100000],stu3[100000],stu4[100000]; int cmp(struct student a, struct student b) { if (a.sum!=b.sum) return a.sum>b.sum; else if (a.d!=b.d) return a.d>b.d; else return a.a =L&&stu[i].c>=L) { M++; if(stu[i].d>=H&&stu[i].c>=H) { stu1[j]=stu[i]; j++; } else if(stu[i].d>=H&&stu[i].c =stu[i].c) { stu3[l]=stu[i]; l++; } else { stu4[m]=stu[i]; m++; } } } sort(stu1, stu1+j, cmp); sort(stu2, stu2+k, cmp); sort(stu3, stu3+l, cmp); sort(stu4, stu4+m, cmp); printf("%dn",M); for(i=0;i 总结 自己没有审题清楚,没有看清每一个判断条件,也没有想到所以sort排序,不然的话错误的可能性就会变小。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)