Pagini recente » Cod sursa (job #2899946) | Cod sursa (job #477860) | Cod sursa (job #755472) | Cod sursa (job #2520126) | Cod sursa (job #257026)
Cod sursa(job #257026)
#include<stdio.h>
class GigaNumber
{
public:
int overflow,number[1000000];
void operator++()
{
int i;
++number[i];
if(number[i]>9)
{
number[i]%=10;
++number[i+1];
if(overflow==i+1)
++overflow;
}
++i;
while(number[i]>9)
{
if(number[i]>9)
{
number[i]%=10;
++number[i+1];
if(overflow==i+1)
++overflow;
}
++i;
}
}
};
GigaNumber n;
int imparte(GigaNumber a,long long dp)
{
int i;
long long aux=0;
while(i<a.overflow)
{
while(aux<dp)
{
aux=aux*10+a.number[i];
++i;
}
aux/=dp;
}
if(aux==1)
return 1;
else
return 0;
}
void outfile(GigaNumber a)
{
for(int i=0;i<a.overflow;++i)
printf("%d",a.number[i]);
}
int main()
{
char buffer[1000000];
int nr,i;
long long dimprt=0;
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
gets(buffer);
for(i=0;buffer[i];++i)
n.number[i]=buffer[i]-48;
n.overflow=i;
scanf("%lld",&dimprt);
while(!imparte(n,dimprt))
++n;
outfile(n);
}