想给老师跪下哭,呜呜呜,我想上学,我想读书……
A.奖学金(已AC)
#include <cstdio>
#include <algorithm>
using namespace std;
struct Student {
int id;
int yuwen, shuxue, yingyu;
int sum;
}stu[350];
bool cmp(Student a, Student b) {
if (a.sum != b.sum)
return a.sum > b.sum;
else if (a.yuwen != b.yuwen)
return a.yuwen > b.yuwen;
else
return a.id < b.id;
}
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d %d", &stu[i].yuwen, &stu[i].shuxue, &stu[i].yingyu);
stu[i].id = i+1;
stu[i].sum = stu[i].yuwen + stu[i].shuxue + stu[i].yingyu;
}
sort(stu, stu + n, cmp);
for (int i = 0; i < 5; i++)
printf("%d %d\n", stu[i].id, stu[i].sum);
return 0;
}
B.高次同余方程求解(已AC)
#include <stdio.h>
int main() {
int k, n;
scanf("%d %d", &k, &n);
for (int i = 1; i <= n; i++) {
int temp = 1;
for (int j = 0; j < k; j++) {
temp = temp * i;
temp %= n;
}
if (temp%n == 1)
printf("%d\n", i);
}
return 0;
}
C.二维数组回形遍历(已AC)
#include <cstdio>
int a[110][110];
int main() {
int row, col;
scanf("%d %d", &row, &col);
for (int i = 1; i <= row; i++)
for (int j = 1; j <= col; j++)
scanf("%d", &a[i][j]);
int num = row * col;
int beginx = 1, beginy = 1;//beginx,beginy分别表示开始的行和列
while (num > 0) {
//先从右至左输出第一行
for (int i = beginx, j = beginy; j <= col; j++) {
printf("%