PAT Basic1022 D進位制的A+B
阿新 • • 發佈:2018-11-28
輸入兩個非負 10 進位制整數 A 和 B (≤230-1),輸出 A+B 的 D (1<D≤10)進位制數。
輸入格式:
輸入在一行中依次給出 3 個整數 A、B 和 D。
輸出格式:
輸出 A+B 的 D 進位制數。
輸入樣例:
123 456 8
輸出樣例:
1103
就是模擬10進位制轉其他進位制的轉換方法
不斷用sum=sum/D,並且取每次的餘數,直至sum==0,最後將所有餘數倒序輸出。
以下程式碼:
#include <cstdio>
#include<stack>
using namespace std;
int main()
{
int A,B,D;
while(scanf("%d%d%d",&A,&B,&D)!=EOF)
{
int sum=A+B;
stack<int> ans; //可以用棧來倒序輸出
if(sum==0) //注意對sum一開始就是0的情況特判
printf("0");
else
{
while(sum!=0) //處理
{
ans.push(sum%D) ;
sum/=D;
}
while(!ans.empty()) //輸出
{
printf("%d",ans.top());
ans.pop();
}
}
printf("\n");
}
return 0;
}