PAT测试题,网路上是遍地答案啦,但是不想应付
1022. D进制的A+B (20)时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
-------------------------------------------原题如上----------------------------------------------
程序代码:#include<stdio.h>
#include<math.h>
#define N
int main(){
long long a,b;int c;
scanf("%lld%lld%d",&a,&b,&c);
//printf("%ld+%ld=%ld\n",a,b,a+b);
a=a+b;
b=0;int wei=1;
//printf("a=%ldb=%ld\n",a,b);
while(a>0){
// printf("text");
b+=a%c*wei;
// printf("b=%ld,",b);
wei*=10;
a=a/c;
// printf("a=%ld,",a);
}
//if(a<0)a*=-1;//处理负数,从题意来说是不需要这些语句的
//while(a>0){
// b-=a%c*wei;
// wei*=10;
// a=a/c;
//}
printf("%lld",b);
return 0;
}
[/quote]----------------------------------------------------------------------------------------------------
这段代码一开始我是用long型变量定义a,b的,后来拿去测试不过,我就换成longlong的,可是结果还是那个样子。我上度娘查了一下,longlong的数据范围是2的63次方,这样看来就不会是数据溢出的问题,测试的时候是有两个实例通过不了的。而我在本机检测的时候估摸了一下不知道会不会是负数设的陷阱,就如上添了一些代码又上机,还是不行。
小弟最想知道的莫过于这类题目设置的边界一般都有什么规律?就好像程序测试,老师也都说要懂得利用边界值、特殊值来验证程序的健壮性。有没有哪位大神知道这种知识应该怎么学?去哪学?是算法的课程还是数据结构的课程还是别的什么?










貌似很高能。
我想不通。。。