Cod sursa(job #42214)

Utilizator slayer4uVictor Popescu slayer4u Data 28 martie 2007 23:05:35
Problema Next Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<string.h>

char s[900010];
long long d,k,r;
int n[900010],o[900010],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;
}