Pagini recente » Cod sursa (job #1477401) | Cod sursa (job #1042584) | Cod sursa (job #1734461) | Cod sursa (job #724839) | Cod sursa (job #83930)
Cod sursa(job #83930)
#include <stdio.h>
#define infile "next.in"
#define outfile "next.out"
#define nmax 1000001
int n[nmax], d[17], n2[nmax];
long i, d0, n0, n20;
void readdata();
void solve();
void writedata();
void add();
int mai_mare();
void sub2();
int main()
{
readdata();
solve();
writedata();
return 0;
}
void readdata()
{
int temp;
freopen(infile, "r", stdin);
char c='a';
while (1)
{
scanf("%c", &c);
if (c>='0' && c<='9')
n[++n0]=c-'0';
else break;
}
for (i=1; i<=n0/2; i++)
{
temp=n[i];
n[i]=n[n0-i+1];
n2[i]=n[i];
n[n0-i+1]=temp;
n2[n0-i+1]=temp;
}
n20=n0;
c='a';
while (1)
{
scanf("%c", &c);
if (c>='0' && c<='9')
d[++d0]=c-'0';
else break;
}
for (i=1; i<=d0/2; i++)
{
temp=d[i];
d[i]=d[d0-i+1];
d[d0-i+1]=temp;
}
fclose(stdin);
}
void add()
{
long i, t = 0;
for (i=1; i<=n0 || i<=d0 || t; i++, t/=10)
n[i] = (t += n[i] + d[i]) % 10;
n0 = i - 1;
}
void mod()
{
while (mai_mare())
sub2();
}
void sub()
{
long i, t = 0;
for (i = 1; i <= n0; i++)
n[i] += (t = (n[i] -= n2[i] + t) < 0) * 10;
for (; n0 > 1 && !n[n0]; n0--);
}
void sub2()
{
long i, t = 0;
for (i = 1; i <= n20; i++)
n2[i] += (t = (n2[i] -= d[i] + t) < 0) * 10;
for (; n20 > 1 && !n2[n20]; n20--);
}
void solve()
{
add();
mod();
sub();
}
void writedata()
{
freopen(outfile, "w", stdout);
for (i=n0; i>0; i--) printf("%d", n[i]);
fclose(stdout);
}
int mai_mare()
{
if (n20>d0) return 1;
if (n20<d0) return 0;
for (long i=n20; i>0; i--)
if (n2[i]<d[i])
return 0;
return 1;
}