题目链接
输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。
- 1.请判断 A+B 是否大于 C。
- 1.无。
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> 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 #"<<i<<": false"<<endl; } else { cout<<"Case #"<<i<<": true"<<endl; } } return 0; }
签到题。
题目链接
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
对给定的 N 个正整数按题目要求输出。数字间以空格分隔,但行末不得有多余空格。
- 1.按照题目要求进行判断就行了
- 1.注意输出格式。
#include <iostream> 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; }
签到题
题目链接
输入在一行中给出 M 和 N,其间以空格分隔。
输出所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。
- 1.现任给两个正整数 M≤N≤10的4次方,
- 1.注意素数的判断
#include<stdio.h> #include<math.h> //判断素数 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("%d\n", num[i-1]); } k = k+1; } }
素数的判断,签到题。
题目链接
输入在 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 <cstdio> #include <cstring> #include <iostream> 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]!='\0')&&(s2[i]!='\0');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]!='\0')&&(s4[i]!='\0');i++) { if(s3[i]==s4[i]&&s3[i]>='A'&&s3[i]<='z') { printf(":%02d",i); break; } } return 0; }
自己没有做出来的原因是自己的对于字符串的使用不十分的熟练。
题目链接
输入第一行给出 3 个正整数
输出第一行首先给出达到最低分数线的考生人数 M,随后 M 行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。
- 1.录取的学生分为4类:
- 2.第一类学生:如果德分>=H&&才分>=H,按照德分才分的总分降序排列录取,若总分相同,则按德分降序,若德分并列,则按准考证号升序排列。
- 3.第二类学生:如果德分>=H&&才分<H,按照德分才分的总分降序排列录取,若总分相同,则按德分降序,若德分并列,则按准考证号升序排列,二类学生排在一类学生之后。
- 4.第三类学生:如果德分<H&&才分<H&&德分>=才分,按照德分才分的总分降序排列录取,若总分相同,则按德分降序,若德分并列,则按准考证号升序排列,三类学生排在二类学生之后。
第四类学生:不满足第一二三类的条件,但满足录取条件的学生。排在第三类学生之后。
- 1.建议使用sort排序,不然的话可能会超时。
#include<iostream> #include<algorithm> 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<b.a; } int main() { int N,L,H,i,M=0; int j=0,k=0,l=0,m=0; scanf("%d %d %d",&N,&L,&H); for(i=0;i<N;i++) { scanf("%d %d %d",&stu[i].a,&stu[i].d,&stu[i].c); stu[i].sum=stu[i].d+stu[i].c; } for(i=0;i<N;i++) { if(stu[i].d>=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<H) { stu2[k]=stu[i]; k++; } else if(stu[i].d<H&&stu[i].c<H&&stu[i].d>=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("%d\n",M); for(i=0;i<j;i++) { printf("%d %d %d\n",stu1[i].a,stu1[i].d,stu1[i].c); } for(i=0;i<k;i++) { printf("%d %d %d\n",stu2[i].a,stu2[i].d,stu2[i].c); } for(i=0;i<l;i++) { printf("%d %d %d\n",stu3[i].a,stu3[i].d,stu3[i].c); } for(i=0;i<m;i++) { printf("%d %d %d\n",stu4[i].a,stu4[i].d,stu4[i].c); } return 0; }
自己没有审题清楚,没有看清每一个判断条件,也没有想到所以sort排序,不然的话错误的可能性就会变小。