http://acm.hdu.edu.cn/showproblem.php?pid=1877
又一版 A+B
Time Limit: 2000/1000 MS (Java/Others)
Total Submission(s): 8509
Problem Description
输入两个不超过整型定义的非负10进制整数A和B(<=2
31-1),输出A+B的m (1 < m <10)进制数。
Input
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。
当m为0时输入结束。
Output
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
Sample Input
8 1300 48 2 1 7 0
Sample Output
2504 1000
Author
ZJU
Source
分析:一道简单题,需要注意的是最后输出的a+b有可能超过int的范围。进制转换时,a+b可能==0;
代码如下:
#include<stdio.h>
#include<string.h>
int ans[1000];
int fun(__int64 a,int m)
{
int i=0;
while(a)
{
ans[i++]=a%m;
a=a/m;
}
return i;
}
int main()
{
int m;
int a,b,l,i;
__int64 c;
while(scanf("%d",&m),m)
{
scanf("%d %d",&a,&b);
c=a+b;
if(!c)
{
printf("0\n");
continue;
//千万别写成break。。在这里wrong了好多次。。唉。。
}
l=fun(c,m);
for(i=l-1;i>=0;i--)
printf("%d",ans[i]);
printf("\n");
}
return 0;
}
#include<string.h>
int ans[1000];
int fun(__int64 a,int m)
{
}
int main()
{
}