题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1230
一道基本的字符串,做多了这类的题目,各种思路都可以出来。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
using namespace std;
/*
freopen("input.txt", "r", stdin); //读数据
freopen("output.txt", "w", stdout); //注释掉此句则输出到控制台
*/
int prime[30],num[100];
void xiaohao()
{
memset(num,0,sizeof(num));
int t=1,i,j;
for(i=2;i<100;i++)
if((!num[i])&&t<30)
{
prime[t++]=i;
for(j=i;j<100;j+=i)
num[j]=1;
}
}
int xh[30],a[30],b[30];
int main()
{
int i1,i2,n,i,j,temp,k,mmax;
char c;
xiaohao();//求素数
while(520)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
i1=0;
while(520)
{
scanf("%d%c",&a[++i1],&c);
if(c==' ')
break;
}
i2=0;
while(520)
{
scanf("%d%c",&b[++i2],&c);
if(c=='\n')
break;
}
if((a[1]+b[1])==0) break;
for(i=1;i<=i1/2;i++)
swap(a[i],a[i1-i+1]);
for(i=1;i<=i2/2;i++)
swap(b[i],b[i2-i+1]);
mmax=i1>i2?i1:i2;
temp=0;k=0;
for(i=1;i<=mmax;i++)
{
k++;
xh[k]=a[i]+b[i]+temp;
temp=xh[k]/prime[i];
xh[k]%=prime[i];
}
while(temp)
{
k++;
xh[k]=temp%prime[k];
temp/=prime[k];
}
for(i=k;i>1;i--)
printf("%d,",xh[i]);
printf("%d\n",xh[1]);
}
return 0;
}