問題 A: 又一版 A+B
時間限制: 1 Sec 內存限制: 32 MB
題目描述
輸入兩個不超過整型定義的非負10進制整數A和B(<=2^31-1),輸出A+B的m (1 < m <10)進制數。
輸入
輸入格式:測試輸入包含若干測試用例。每個測試用例佔一行,給出m和A,B的值。
當m爲0時輸入結束。
輸出
輸出格式:每個測試用例的輸出佔一行,輸出A+B的m進制數。
樣例輸入
2 4 5
8 123 456
0
樣例輸出
1001
1103
提示
注意輸入的兩個數相加後的結果可能會超過int和long的範圍。
經驗總結
因爲A+B有可能超出long的範圍,所以採用long long int進行存儲,進制轉換就是基礎的進制轉換,沒什麼好說的~~
AC代碼
#include <cstdio>
int main()
{
int d;
long long a,b;
while(scanf("%d",&d)!=EOF)
{
if(d==0) break;
scanf("%lld %lld",&a,&b);
long long sum=a+b;
int ans[40],num=0;
do
{
ans[num++]=sum%d;
sum/=d;
}while(sum!=0);
for(int i=num-1;i>=0;i--)
printf("%d",ans[i]);
printf("\n");
}
return 0;
}