Pagini recente » Cod sursa (job #2320615) | Cod sursa (job #2108838) | Cod sursa (job #2853057) | Cod sursa (job #2740459) | Cod sursa (job #1687885)
#include<fstream>
#include<cstring>
#include<algorithm>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
const int NMAX=10000;
char s[NMAX+5];
int a[NMAX+4];
long long rest(int a[],long long k)
{
int i;
long long r=0;
for(i=a[0]; i>=1; i--)
{
r=r*10+a[i];
r=r%k;
}
return r;
}
void adun(int a[],int b[])
{
int tr,i,aux,l;
l=max(a[0],b[0]);
tr=0;
a[0]=l;
for(i=1; i<=a[0]; i++)
{
aux=a[i]+b[i]+tr;
a[i]=aux%10;
tr=aux/10;
}
while (tr)
{
a[++a[0]]=tr%10;
tr/=10;
}
}
void printf(int x[])
{
for( int i=x[0]; i>=1; i--)
g<<x[i];
g<<endl;
}
int main()
{
long long d,r;
int i,n;
memset(a,0,sizeof(a));
f.getline(s,NMAX+1);
f>>d;
n=strlen(s);
a[0]=n;
for(i=n-1; i>=0; i--)
a[n-i]=s[i]-'0';
r=rest(a,d);
if(r!=0)
{
d=d-r;
int b[20];
memset(b,0,sizeof(b));
do
{
b[++b[0]]=d%10;
d/=10;
}
while(d);
adun(a,b);
}
printf(a);
return 0;
}