首页 > 其他分享 >ZOJ 2529(不同进制的高精度&sstream)

ZOJ 2529(不同进制的高精度&sstream)

时间:2022-10-25 11:38:41浏览次数:40  
标签:int sstream ZOJ 2529 ++ ss2 ss while include


高精度 a+b

第i位的进制为第 ith 系数

慢慢做吧……

Important---:切记质数表一定要开大一些


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<cctype>
#include<iostream>
#include<functional>
#include<algorithm>
#include<sstream>
using namespace std;
int a[100],siz=0;
char a1[1000],a2[1000];
int A[1000],B[1000],C[1000];
void stod()
{

istringstream ss(a1);
int i=1;
while (ss)
{
ss>>A[i];
i++;
char c;
if (ss) ss>>c;
}
A[0]=i-1;
stringstream ss2;
ss2<<a2;
i=1;
while (ss2)
{
ss2>>B[i];
i++;
char c;
if (ss2) ss2>>c;
}
B[0]=i-1;
for (int i=1;i<=(A[0]>>1);i++) swap(A[i],A[A[0]-i+1]);
for (int i=1;i<=(B[0]>>1);i++) swap(B[i],B[B[0]-i+1]);

}
int main()
{
for (int i=1;siz<=80;i++)
{
bool flag=0;
for (int j=2;j<=i-1;j++)
if (i%j==0) flag=1;
if (!flag)
{
siz++;
a[siz]=i;
}
}
// for (int i=1;i<=25;i++) cout<<a[i]<<' ';
while (scanf("%s%s",a1,a2)!=EOF)
{
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
stod();
// for (int i=1;i<=B[0];i++) cout<<B[i]<<' ';
memset(C,0,sizeof(C));
C[0]=max(A[0],B[0])+1;
for (int i=1;i<=C[0];i++)
{
C[i]+=A[i]+B[i];
C[i+1]+=C[i]/a[i+1];
C[i]%=a[i+1];
}
while (!C[C[0]]) C[0]--;
for (int i=C[0];i>=2;i--) cout<<C[i]<<",";
cout<<C[1]<<endl;
}
// while (1);
return 0;
}



标签:int,sstream,ZOJ,2529,++,ss2,ss,while,include
From: https://blog.51cto.com/u_15724837/5794320

相关文章