第十一题
思路:将前两个给出的正整数相加与第三个正整数做比较,因为int数据类型可能使数值超出范围,所以使用long long类型来存放数据。并定义a4来表示当前是第几组数据。
第十二题
思路:输入第一个数字N后,直接将后面的数字输入一个处理一个。注意:最后一个测试点,A2交错求和可能求和结果就是0,所以需要单独判断存不存在。
int main()
{
int A1=0,A2=0,A3=0,A5=0;
double A4=0.0;
int a,N;
int k=1;
int cntA2=0,cntA4=0;;
cin >> N;
//for(int i=0;i<N;i++)
while(N--)
{
cin>>a;
if(a%10==0)
A1 +=a;
else if (a%5==1)
{
A2 = A2+k*a;
k=-k;
cntA2++;
}
else if(a%5==2) A3++;
else if(a%5==3)
{
A4 +=a;
cntA4 =cntA4+1;
}
else if(a%5==4)
{
if(a>A5) A5=a;
}
}
//部分代码展示
第十三题
思路:编写一个判断是否为素数的函数,首先题目给了M和N的范围,就可以通过计数器得到一共有多少个素数,所以创建一个数组把这10000个素数算好存起来。之后就直接将需要打印的位置在素数数组中找到打印就行,需要注意换行和空格问题。
//部分代码展示
using namespace std;
int main()
{
int M = 0, N = 0;
int t = 0, k = 2;
int a[10000];
int j = 0;
cin >> M >> N;
while (t < N) { //存储第N-M个之间的素数在a数组中
if (isprime(k)) {
t++;
if (t >= M)
a[j++] = k;
}
k++;
第十四题
思路:
- 星期一到星期天一共七天,所以对应的大写字母应该是A到G,取值范围不能弄错。
- 计算小时时,对应的字符只能是数字或者大写字母A到N。
- 对比第三个和第四个字符串,任何大小写字母只要相对应了那就符合条件,可获得字符下标。
- 注意用switch语句实现表示星期几。
第十五题
思路:
5. 题目分析得到:第一类:H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序。第二类:才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;第三类:德才分均低于 H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;第四类:其他达到最低线 L 的考生也按总分排序,但排在第三类考生之后。 第五类就不管他了。
6. 当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。
(借鉴了这位的见解
#include <iostream>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;
struct person
{
string id;
int d;
int c;
};
person q1[100000], q2[100000], q3[100000], q4[100000];
bool cmp(person a, person b)
{
if (a.d + a.c != b.c + b.d)
{
return (a.d + a.c) > (b.c + b.d);
}
else
{
if (a.d != b.d)
{
return a.d > b.d;
}
else
{
return a.id < b.id;
}
}
}
int main()
{
int n, l, h, i;
person p;
cin >> n >> l >> h;
int n1 = 0, n2 = 0, n3 = 0, n4 = 0;
while (n--)
{
cin >> p.id >> p.d >> p.c;
if (p.d < l || p.c < l)
continue;
if (p.d >= h && p.c >= h)
{
q1[n1++] = p;
}
else if (p.d >= h && p.c < h)
{
q2[n2++] = p;
}
else if (p.d < h && p.c < h && p.d >= p.c)
{
q3[n3++] = p;
}
else
{
q4[n4++] = p;
}
}
sort(q1, q1 + n1, cmp);
sort(q2, q2 + n2, cmp);
sort(q3, q3 + n3, cmp);
sort(q4, q4 + n4, cmp);
int cnt = n1 + n2 + n3 + n4;
cout << cnt << endl;
i = 0;
while (i < n1)
{
p = q1[i++];
cout << p.id << " " << p.d << " " << p.c << endl;
}
i = 0;
while (i < n2)
{
p = q2[i++];
cout << p.id << " " << p.d << " " << p.c << endl;
}
i = 0;
while (i < n3)
{
p = q3[i++];
cout << p.id << " " << p.d << " " << p.c << endl;
}
i = 0;
while (i < n4)
{
p = q4[i++];
cout << p.id << " " << p.d << " " << p.c << endl;
}
return 0;
}