PAT总结(B1016、B1026)
B1016 部分A+B
题目
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA组成的新整数 PA例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA是 66,因为 A 中有 2 个 6。
现给定 A、DA、B、DB,请编写程序计算 PA+PB。
对整数各位数字的枚举
int sample;
while(sample){
int single = sample % 10;
sample = sample /1 0;
}
参考代码
#include <cstdio>
int main() {
long long a,b,da,db;
long long pa=0,pb=0;
scanf("%lld %lld %lld %lld",&a,&da,&b,&db);
while(a){
if(a%10==da) pa=pa*10+da;
a/=10;
}
while(b)
{
if(b%10==db) pb=pb*10+db;
b/=10;
}
printf("%lld",pa+pb);
return 0;
}
B1026 程序运行时间
题目
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,我们只要在调用 f 之前先调用 clock(),获得一个时钟打点数 C1;在 f 执行完成后再调用 clock(),获得另一个时钟打点数 C2;两次获得的时钟打点数之差 (C2-C1) 就是 f 运行所消耗的时钟打点数,再除以常数 CLK_TCK,就得到了以秒为单位的运行时间。
这里不妨简单假设常数 CLK_TCK 为 100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。
1.四舍五入问题round函数的参数必须是浮点型
-使用round函数
#include<cmath>
int delta=round( (double)(t2 - t1) / 100);
-直接判断
int delta=t2-t1;
if(delta % 100 >= 50)
delta=delta/100+1;
else
delta=delta/100;
2.输出格式问题位数不足时高位需要补0(%0md 位数不足m位时用0将前面补齐)
printf("%02d:%02d:%02d",hour,minute,second);
参考代码
#include <cstdio>
#include <cmath>
int main() {
int t1,t2;
scanf("%d%d",&t1,&t2);
// int delta=t2-t1;
// if(delta%100>=50)
// delta=delta/100+1;
// else
// delta=delta/100;
int delta=round((double)(t2-t1)/100);
int hour,minute,second;
hour=delta/3600;
delta%=3600;
minute=delta/60;
second=delta%60;
printf("%02d:%02d:%02d",hour,minute,second);
return 0;
}
网友评论