题目1026:又一版 A+B

来源:互联网 发布:弦理论 知乎 编辑:程序博客网 时间:2024/04/29 13:34
题目1026:又一版 A+B

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:17699

解决:4772

题目描述:

输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。

输入:
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。
输出:
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。
样例输入:
8 1300 482 1 70
样例输出:
25041000
来源:
2008年浙江大学计算机及软件工程研究生机试真题
答疑:
解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7750-1-1.html

.题目分析

  对于做这种水题,最重要的是要走心,千万不要忘记0,0测试样例,再次感慨一下while do和do whie,终于感受到了强大的区别.

#include<iostream>#include<fstream>using namespace std;int num[40];int main(){ifstream in;in.open("1.txt");unsigned int m,a,b;long long int sum;while(in>>m && m!=0){in>>a>>b;sum=a+b;int index=0;if(sum==0)//要考虑0的这种情况 {cout<<"0"<<endl;continue;}while(sum!=0){num[index]=sum%m;sum=sum/m;++index;}for(int i=index-1;i>=0;--i)cout<<num[i];cout<<endl;}return 0;} 

(2)比较强大的do while
#include<stdio.h>  int main()   {       long long a,b;       int m,i;       while(scanf("%d",&m)!=EOF){           if(m==0) break;           scanf("%lld%lld",&a,&b);           a=a+b;           int ans[50],size=0;           do{                           //循环至少执行一次,不需要特殊处理               ans[size++]=a%m;               a/=m;           }while(a!=0);           for(i=size-1;i>=0;i--){               printf("%d",ans[i]);           }           printf("\n");       }       return 0;   }  



0 0