题目背景
小明这在写作业,其中有一道A+B Problem ,他想啊想啊想,就是想不出来,于是就找到了会编程的你......
题目描述
这里的A+B是很奇特的。它是按质数的顺序来进位的。例如:1,0+2,1=1,0,1(用,来分隔每一位)。个位是2进制,十位是3进制,百位是5进制,千位是7进制,万位是11进制……两个加数的最高位是万位(万位可能有两位)。
输入格式
输入一个形如1,0+2,1字符串s。
输出格式
输出相加后的结果。
输入数据 1
1,0+2,1
输出数据 1
1,0,1
题解
讲解
代码主要分为 个阶段:
1.读入存到 vector(a,b)数组里;
2.倒序存储(为了进位方便);
3.模拟加法(和高精度加法很像,可以看一下);
4.倒序输出结果;
读入时要特殊判断,如果在家号前面时做什么,加号后面时做什么。
补充:getchar可以读入字符(换行,空格也可以)。
#include<bits/stdc++.h>
using namespace std;
int t[]={2,3,5,7,11,13};
vector<int> a,b,c;
inline void getC()
{
int flag=0;
for(int c=getchar();;c=getchar())
{
if(c!='+' && flag==0) if(c>='0' && c<='9') a.push_back(c-'0');
if(c=='+' || flag==1)
{
flag=1;
if(c>='0' && c<

最低0.47元/天 解锁文章
900

被折叠的 条评论
为什么被折叠?



