PAT 1011 A+B 和 C (15 分)
给定区间 [−2^31,2^31] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。
输入格式:
输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
输出格式:
对每组测试用例,在一行中输出 Case #X: true
如果 A+B>C,否则输出 Case #X: false
,其中 X
是测试用例的编号(从 1 开始)。
输入样例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
输出样例:
Case #1: false
Case #2: true
Case #3: true
Case #4: false
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main() {
int T;
long long num[20][3]; //int型数据范围是[-2^31,2^31-1]
scanf("%d", &T);
for (int i = 0; i < T; i++) {
scanf("%lld%lld%lld", &num[i][0], &num[i][1], &num[i][2]);
}
for (int i = 0; i < T; i++) {
if (num[i][0] + num[i][1] > num[i][2]) {
printf("Case #%d: true\n", i+1);
}
else {
printf("Case #%d: false\n", i+1);
}
}
return 0;
}
PAT 1016 部分A+B (15 分)
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。
现给定 A、DA、B、DB,请编写程序计算 PA+PB。
输入格式:
输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中 0<A,B<10^9。
输出格式:
在一行中输出 PA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
代码长度限制
16 KB
时间限制
150 ms
内存限制
64 MB
#include<stdio.h>
int main() {
long long A, B;
int Da, Db,Pa=0,Pb=0,num=10,ca=0;
scanf("%lld %d %lld %d", &A, &Da, &B, &Db);
while(A>0) {
if (A % 10 == Da) {
Pa = Pa * num + Da;
}
A = A / 10;
}
while(B>0){
if (B % 10 == Db) {
Pb = Pb * num + Db;
}
B = B / 10;
}
printf("%d", Pa + Pb);
return 0;
}
PAT 1026 程序运行时间 (15 分)
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,我们只要在调用 f 之前先调用 clock(),获得一个时钟打点数 C1;在 f 执行完成后再调用 clock(),获得另一个时钟打点数 C2;两次获得的时钟打点数之差 (C2-C1) 就是 f 运行所消耗的时钟打点数,再除以常数 CLK_TCK,就得到了以秒为单位的运行时间。
这里不妨简单假设常数 CLK_TCK 为 100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。
输入格式:
输入在一行中顺序给出 2 个整数 C1 和 C2。注意两次获得的时钟打点数肯定不相同,即 C1 < C2,并且取值在 [0,107]。
输出格式:
在一行中输出被测函数运行的时间。运行时间必须按照 hh:mm:ss
(即2位的 时:分:秒
)格式输出;不足 1 秒的时间四舍五入到秒。
输入样例:
123 4577973
输出样例:
12:42:59
代码长度限制
16 KB
时间限制
200 ms
内存限制
64 MB
#include<stdio.h>
int main() {
int c1, c2;
scanf("%d%d", &c1, &c2);
int ans = c2 - c1;
if (ans % 100 >= 50) {
ans = ans / 100 + 1;
}
else {
ans = ans / 100;
}
printf("%02d:%02d:%02d\n", ans / 3600, ans % 3600 / 60, ans % 60);
return 0;
}
//awsl,这是今天做的最后一道题,本来以为没什么问题可以顺利过的,哭辽
//上面那个是标准答案