PAT乙级1022
1022 D进制的A+B (20 分)
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
1 #include <bits/stdc++.h> 2 using namespace std; 3 int a,b,k; 4 int sum; 5 int no[105],tot; 6 int main() 7 { 8 cin>>a>>b>>k; 9 sum=a+b; 10 if(sum){ 11 while(sum) 12 { 13 no[tot++]=sum%k; 14 sum/=k; 15 } 16 for(int i=tot-1;i>=0;i--) 17 { 18 cout<<no[i]; 19 } 20 } 21 else 22 cout<<0; 23 return 0; 24 }
1.首先看到输入数,想到其范围,题目给定每个输入数最多为2的30次-1,两个输入数相加,最多为2的32次-2,因输出位数最多的是二进制数,故输出最多32位。二进制数最多32位,那么十进制数必定小于32位,故数据类型用int即可。
2.sum==0,sum!=0分类讨论
sum==0直接输出0