Cod sursa(job #38474)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 25 martie 2007 20:17:21
Problema Next Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char ct,ns[1000000],ds[100],nb[1000000],db[100],lnb;
long long int cont,i,ln,ld,p;
int main()
{	FILE *f,*g;
	f=fopen("next.in","r");
	g=fopen("next.out","w");
	fgets(ns,1000000,f);
	fgets(ds,17,f);
	strcpy(nb,ns);ln=strlen(ns);lnb=ln;
	ld=strlen(ds);
	while(strlen(ns)>strlen(ds))
	{ if(strncmp(ns,ds,ld)<0) { ns[1]=ns[1]+10*(ns[0]-'0');strcpy(ns,ns+1);}
	  while(strlen(ns)>=strlen(ds)&&strncmp(ns,ds,ld)>=0)
	  for(i=strlen(ds)-2;i>=0;i--)
	  {if(ns[i]<ds[i]){ns[i]+=10;ns[i-1]-=1;}
	   ns[i]=ns[i]-ds[i]+'0';}
	}
	while(ns[0]=='0')strcpy(ns,ns+1);
	ln=strlen(ns);
	if(ln)
	{ for(p=0;p<ld-1;p++)
	  {nb[lnb-2-p]+=ds[ld-2-p]-'0';}
	  for(p=0;p<ln-1;p++)
	  {nb[lnb-2-p]-=ns[ln-2-p]-'0';}
	}
	for(p=lnb-2;p>0;p--)
	{ if(nb[p]<'0'){nb[p]+=10;nb[p-1]--;}
	  if(nb[p]>'9'){nb[p]-=10;nb[p-1]++;}
        }
	fputs(nb,g);
	fcloseall();
	return 0;
}