A.小汇的困扰
思路:这是一个模拟题,也是一个规律题,行数和列数的和是一样的,可以从行数i,从 0 开始,列数j从 0 开始,范围到n - i如果是 1 到 9,不满两位数,则补上0。
代码如下:
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int x = 1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n - i; j++) {
printf("%.2d", x);
x++;
}
printf("\n");
}
return 0;
}
B.太好啦,又是一个签到题
思路:输入 n 行 m 列的矩阵,输出 x 行 y 列的元素即可。
代码如下:
#include <stdio.h>
const int N = 15;
int main() {
int n, m;
int a[N][N];
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
scanf("%d", &a[i][j]);
}
}
int x, y;
scanf("%d%d", &x, &y);
printf("%d", a[x][y]);
return 0;
}
C.原来,这是真正的签到题呀
思路:把一个四位数反向输出即可,用字符来存储数字,如果有前导 0,一般情况
下,是不用写出来的,特殊场合除外,比如图书编号。
代码如下:
#include <stdio.h>
int main() {
char ch[4];
scanf("%s", ch);
int idx = 0;
for(int i = 3; i >= 0; i--) {
if(ch[i] != '0') {
idx = i;
break;
}
}
for(int i = idx; i >= 0; i--) {
printf("%c", ch[i]);
}
return 0;
}
D.这是个好问题
思路:读懂题意就会发现,这是个求平均数的,糖果总和平均分配给小汇和瑶瑶两个人,满足两个人最多且相同
的糖果数量。
注意数据范围,会爆 int,需要用 long long
来存储数据。
代码如下:
#include <stdio.h>
#define int long long
signed main() {
int t;
scanf("%lld", &t);
while(t--) {
int a, b, c;
scanf("%lld%lld%lld", &a, &b, &c);
printf("%lld\n", (a + b + c) / 2);
}
return 0;
}
E.铲子怎么买???
思路:至少需要买一把铲子,说明一定会买一把铲子,要求不找零买几个铲子,也就是说,买铲子不需要找钱,我们可以用计数count
来存储铲子的数量,从1
开始计数,如果买铲子的数量总钱恰好为10的倍数,则直接输出即可,若不是10的倍数,则花r
零钱恰好不用找零,则该数量就是最少的。
代码如下:
#include <stdio.h>
int main() {
int k, r;
scanf("%d%d", &k, &r);
int x = 1;
while(1) {
if(k * x % 10 == 0 || k * x % 10 == r) {
printf("%d", x);
break;
}
else {
x++;
}
}
return 0;
}