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次方,这样看来就不会是数据溢出的问题,测试的时候是有两个实例通过不了的。而我在本机检测的时候估摸了一下不知道会不会是负数设的陷阱,就如上添了一些代码又上机,还是不行。
小弟最想知道的莫过于这类题目设置的边界一般都有什么规律?就好像程序测试,老师也都说要懂得利用边界值、特殊值来验证程序的健壮性。有没有哪位大神知道这种知识应该怎么学?去哪学?是算法的课程还是数据结构的课程还是别的什么?