Pagini recente » Cod sursa (job #2156116) | Cod sursa (job #2535335) | Cod sursa (job #1705316) | Cod sursa (job #1703187) | Cod sursa (job #39797)
Cod sursa(job #39797)
# include <stdio.h>
# include <string.h>
const long int MAXL=1000100;
char s[MAXL+10];
long int nr[MAXL+1],len,d,len2;
void convert()
{
long long int l=strlen(s);
s[l-1]=s[l];
l-=2;
len=l;
}
void citire()
{
FILE *f=fopen("next.in","r");
fgets(s,MAXL,f);
fscanf(f,"%lld",&d);
fclose(f);
}
void divide()
{
long long int l=0,aux=0;int a2;
while (l<=len)
{
while (aux<=d&&l<=len)
{
aux=aux*10+(int)s[l]-48;
l++;
}
nr[++len2]=aux/d;
aux%=d;
while (l<=len)
{
aux=aux*10+(int)s[l]-48;
nr[++len2]=aux/d;
aux%=d;
l++;
}
}
long long int i;
for (i=1;i<=len2/2;i++)
{
a2=nr[i];nr[i]=nr[len2-i+1];nr[len2-i+1]=a2;
}
if (aux)
{
i=1;
nr[i]++;
while (nr[i]>=10)
{
nr[i+1]+=nr[i]/10;
nr[i]%=10;
i++;
}
if (i>len2) len2=i;
}
}
void multiply()
{
long long int i,aux=0;
for (i=1;i<=len2;i++)
{
aux+=nr[i]*d;
nr[i]=aux%10;
aux/=10;
}
len2+1;
while (aux)
{
nr[i]=aux%10;
aux/=10;
i++;
}
len2=i-1;
}
void print()
{
FILE *g=fopen("next.out","w");
while (len2)
{
fprintf(g,"%d",nr[len2]);
len2--;
}
fprintf(g,"\n");
fcloseall();
}
int main()
{
citire();
convert();
divide();
multiply();
print();
return 0;
}