Pagini recente » Istoria paginii runda/ada34/clasament | Istoria paginii blog/valorificarea-spiritului-competitiv | Cod sursa (job #1603883) | Cod sursa (job #2046211) | Cod sursa (job #286650)
Cod sursa(job #286650)
#include<stdio.h>
#include<string.h>
#define IN "next.in","r",stdin
#define OUT "next.out","w",stdout
#define Nmax 1000020
#define Max 20
int v[Nmax],a[Max];
int d1;
char n[Nmax] , d[Max];
int rez[Nmax],sum[Max];
void citire()
{
int E = 1 , i ;
freopen(IN);
scanf("%s%s",n,d);
for( i = strlen(n) - 1; i >= 0 ; i--)
v[E++] = n[i] - '0';
v[0] = strlen(n);
int T = 1;
for( i = strlen(d) - 1 ; i >= 0 ; --i)
{
a[T++] = d[i] - '0';
d1 += (d[i] - '0')*10;
}
a[0] = strlen(d);
}
void afisare()
{
freopen(OUT);
int t = 0 , i , j ;
for(int i=1;i<=sum[0];++i)
printf("%d ",sum[i]);
for( i = 1 ;i <= v[0] || i <= sum[0] || t;++i )
{
t += v[i] + sum[i];
v[i] = t % 10;
t /= 10;
}
for(j = i - 1; j >=1; ++j)
printf("%d",v[j]);
printf("\n");
}
void dif()
{
int t = 0 , T = 1 , i ;
for (i = 1; i <= a[0] || i <= rez[0] || t; i++)
{
t+=a[i] - rez[i];
if(t < 0)
t+=10;
sum[i] = t * 10;
}
sum[0] = i - 1;
afisare();
}
void solve()
{
int t = 0,T = 1 ,i ;
/*
for(int i =1 ;i <= v[0];++i)
printf("%d %d",v[i],a[i]);
*/
for (i = v[0]; i > 0; i--, t %= d1)
rez[i] = (t = t * 10 + v[i]) / d1;
for (; v[0] > 1 && !v[v[0]]; v[0]--);
rez[0] = i - 1;
dif();
}
int main()
{
citire();
solve();
return 0;
}