九度OJ 1016
来源:互联网 发布:dnf辅助dll源码论坛 编辑:程序博客网 时间:2024/05/24 02:56
- 题目描述:
- 读入两个不超过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<string>#include<sstream>#include<vector>#include<algorithm>using namespace std;vector<int> a,b,c;//a用来存的是A,b用来存的是B,c用来存的是和。动态;string A,B;int p[30]={ 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67, 71,73,79,83,89,97,101,103,107,109,113};//偷个懒,直接列出素数数组,不写了 void toint(){ a.clear(); b.clear(); for( int i=0; i<A.length(); i++) { if(A[i]==',') A[i]=' '; } for( int i=0; i<B.length(); i++) { if(B[i]==',') B[i]=' '; } int v; istringstream str1(A);//istringtream是一个string对象构造来的,istringtream类从一个 //string对象读取字符字符串构造字符串流的时候,空格会造成字符串参数的内部分界。利用分解获取 //的方法实际完成了到整型对象的转换。 while(str1>>v) { a.push_back(v);//对a赋值 } istringstream str2(B); while(str2>>v) { b.push_back(v); } reverse(a.begin(),a.end()); reverse(b.begin(),b.end());}void get()//开始相加{ c.clear(); int carry=0; int la=a.size(); int lb=b.size(); int v=0; for( int i=0; i<(la>lb?la:lb); i++) { if(i>=la) v=b[i]+carry; else if(i>=lb) v=a[i]+carry; else v=a[i]+b[i]+carry; c.push_back(v%p[i]); carry=v/p[i]; if(i==(la>lb?la:lb)-1&&carry!=0) { c.push_back(carry); } } reverse(c.begin(),c.end());//相加完要反转; for( int i=0;i<c.size();i++){//别输出多了。 if(i==c.size()-1){ cout<<c[i]<<endl; break; } cout<<c[i]<<","; } }int main(){ while(cin>>A>>B&&A!="0"&&B!="0") { toint(); get(); } return 0; } /************************************************************** Problem: 1016 User: roye Language: C++ Result: Accepted Time:10 ms Memory:1552 kb****************************************************************/
0 0
- 九度OJ 1016
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- 【九度OJ】:九度OJ 1206
- 九度OJ 1016 火星A+B
- 九度OJ:1000
- 【九度OJ】 1006
- 九度 OJ 1499
- 九度OJ-1002
- 九度OJ-1003
- 九度OJ 1004
- 九度OJ 1003
- 九度oj 采药
- 九度OJ 1001
- 九度OJ 1015
- 九度oj 1972
- weblogic 安装、配置
- poj 2773 Happy 2006
- POJ 1704 Georgia and Bob(尼姆变形)
- nyoj 33 蛇形填数
- Linux 游戏
- 九度OJ 1016
- 远程登录_Telnet
- c#总结
- H264解码多线程项目总结
- 使用esxcli命令将ESXi 5.1升级到ESXi 5.1b
- 迭代式开发技术
- Android的编译过程
- Delphi窗体中禁用最大化按钮
- week2