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