Nu aveti permisiuni pentru a descarca fisierul grader_test20.ok
Cod sursa(job #37579)
Utilizator | Data | 25 martie 2007 11:11:34 | |
---|---|---|---|
Problema | Next | Scor | 0 |
Compilator | cpp | Status | done |
Runda | preONI 2007, Runda 4, Clasa a 9-a si gimnaziu | Marime | 0.85 kb |
#include<stdio.h>
#include<string.h>
char s[1000010];
long long d,k,r;
int n[1000010],o[1000010],i;
long long mod(int A[], long long B)
{
int i;
long long t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
void add(int A[], int B[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void print(int x[])
{
for (int i=x[0];i>=1;i--)
printf("%d",x[i]);
printf("\n");
}
int main()
{
freopen ("next.in","rt",stdin);
freopen ("next.out","wt",stdout);
scanf("%s",&s);
scanf("%lld",&d);
k=strlen(s);
n[0]=k;
for (i=k-1;i>=0;i--)
if (s[i]>='0' && s[i]<='9')
n[k-i]=s[i]-'0';
r=mod(n,d);
k=d-r;
while (k)
o[++o[0]]=k%10,k/=10;
add(n,o);
print(n);
return 0;
}