Pagini recente » Cod sursa (job #1317066) | Cod sursa (job #693883) | Cod sursa (job #2759628) | Cod sursa (job #731258) | Cod sursa (job #41830)
Cod sursa(job #41830)
using namespace std;
#include<fstream>
#define ncmax 1000010
char n[ncmax],d[ncmax],s[ncmax],a[ncmax];
int nr,nd,ns,na;
ifstream fin("next.in");
ofstream fout("next.out");
void string_to_nrmare(char s[ncmax],char a[ncmax],int &na)
{
na=strlen(s);
int i;
for(i=0;i<na;i++)
a[na-i-1]=s[i]-'0';
}
void aduna(char a[ncmax],int na,
char b[ncmax],int nb,
char c[ncmax],int &nc)
{
nc=na;
if(nb>nc)nc=nb;
int t=0,i;
for(i=0;i<nc;i++)
{
c[i]=(a[i]+b[i]+t)%10;
t=(a[i]+b[i]+t)/10;
}
if(t) c[nc++]=t;
}
int compar(char a[ncmax],int na,
char b[ncmax],int nb)
{
int i;
if(na>nb) return 1;
if(na==nb)
{
for(i=na-1;i>=0;i--) if(b[i]>a[i]) return 0;
return 1;
}
return 0;
}
int main()
{
int i;
fin.get(s,ncmax);
string_to_nrmare(s,n,nr);
fin.get();
fin.get(s,ncmax);
string_to_nrmare(s,d,nd);
for(i=0;i<=nd-1;i++)
a[i]=d[i];
na=nd;
for(i=0;i<=nd-1;i++)
s[i]=d[i];
ns=nd;
while(compar(n,nr,a,na))
{
aduna(d,nd,s,ns,a,na);
for(i=0;i<=na;i++)
s[i]=a[i];
ns=na;
}
for(i=na-1;i>=0;i--) fout<<int(a[i]);
fout<<"\n";
fin.close();
fout.close();
return 0;
}