题目1016:火星A+B
来源:互联网 发布:java的输入输出流 编辑:程序博客网 时间:2024/05/16 04:39
- 题目描述:
- 读入两个不超过25位的火星正整数A和B,计算A+B。需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数。例如:地球上的10进制数2,在火星上记为“1,0”,因为火星个位数是2进制的;地球上的10进制数38,在火星上记为“1,1,1,0”,因为火星个位数是2进制的,十位数是3进制的,百位数是5进制的,千位数是7进制的……
- 输入:
- 测试输入包含若干测试用例,每个测试用例占一行,包含两个火星正整数A和B,火星整数的相邻两位数用逗号分隔,A和B之间有一个空格间隔。当A或B为0时输入结束,相应的结果不要输出。
- 输出:
- 对每个测试用例输出1行,即火星表示法的A+B的值。
- 样例输入:
1,0 2,14,2,0 1,2,01 10,6,4,2,10 0
- 样例输出:
1,0,11,1,1,01,0,0,0,0,0
代码:
#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<string>using namespace std;int prime[30];string a;string b;void getprime(){ int m=3; int t=2; prime[0]=1; prime[1]=2; while(t<30){ int i=2; for(;i<m;i++){ if(m%i==0){ break; } } if(i==m){ prime[t]=m; t++; } m++; }}void getresult(vector<int> num1,vector<int> num2){ reverse(num1.begin(),num1.end()); reverse(num2.begin(),num2.end()); vector<int> result; int minsize,maxsize; if(num1.size()<=num2.size()){ minsize=num1.size();maxsize=num2.size(); }else{ minsize=num2.size();maxsize=num1.size(); } for(int i=minsize;i<maxsize;i++){ if(maxsize==num1.size()){ num2.push_back(0); }else{ num1.push_back(0); } } int c=0; for(int i=0;i<maxsize;i++){ result.push_back((num1[i]+num2[i]+c)%prime[i+1]); c=(num1[i]+num2[i]+c)/prime[i+1]; } if(c>0){ result.push_back(c); } reverse(result.begin(),result.end()); for(int i=0;i<result.size()-1;i++){ cout<<result[i]<<","; } cout<<result[result.size()-1]<<endl;}int main(){ getprime(); while(cin>>a>>b && a!="0"&&b!="0"){ vector<int> num1; vector<int> num2; int temp=0; for(int i=0;i<a.length();i++){ if(a[i]!=','){ temp=temp*10+(a[i]-'0'); }else{ num1.push_back(temp); temp=0; } } num1.push_back(temp); temp=0; for(int i=0;i<b.length();i++){ if(b[i]!=','){ temp=temp*10+(b[i]-'0'); }else{ num2.push_back(temp); temp=0; } } num2.push_back(temp); getresult(num1,num2); } return 0;}
阅读全文
0 0
- 题目1016:火星A+B
- 题目1016:火星A+B
- 题目1016:火星A+B
- 题目1016:火星A+B
- 题目1016:火星A+B
- 题目1016:火星A+B
- 题目1016:火星A+B 学习
- 九度OJ 题目1016:火星A+B
- 九度oj 题目1016:火星A+B
- 九度OJ 题目1016:火星A+B
- 九度OJ-题目1016 火星A+B
- 九度oj 题目1016:火星A+B 【ZJU2006考研机试题2】
- 九度:1016<火星A+B>
- 九度OJ 1016 火星A+B
- 九度[1016]-火星A+B
- hdu1230火星A+B
- hdu1230(火星A+B)
- zju2006火星A+B
- 编程的意义何在?
- Remind-You Part2. setup.py打包代码, socket通讯
- Remind-You Part3. Python-Sqlite记录数据
- 简单工厂、工厂方法模式和抽象工厂模式区别?
- webstorm快捷键大全
- 题目1016:火星A+B
- A/B HDU
- 暑期集训—day4—第一次暑期训练
- SQL注入教程——(一)SQL注入原理
- 几种值交换的方法及利弊
- 学习网址
- JAVA重新学习第一篇-java是什么
- 通过示例看JavaScript的闭包
- java se TCP上传文件