Pagini recente » Cod sursa (job #1720351) | Cod sursa (job #1851737) | Cod sursa (job #1645496) | Cod sursa (job #2552078) | Cod sursa (job #1669036)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
void printh(int x[])
{
for(int i = x[0]; i >= 1; i--)
printf("%d",x[i]);
printf("\n");
}
void adh(int a[],int b[],int c[])
{
int tr,i,aux;
c[0] = max(a[0],b[0]);
tr = 0;
for(i = 1; i <= c[0]; ++i)
{
aux = a[i] + b[i] + tr;
c[i] = aux % 10;
tr = aux / 10;
}
if(tr)
c[++c[0]] = tr;
}
int comp(int a[],int b[])
{
if(a[0] > b[0])
return 1;
else if(a[0] < b[0])
return -1;
for(int i = a[0]; i >= 1; i--)
{
if(a[i] > b[i])
return 1;
else if(a[i] < b[i])
return -1;
}
return 0;
}
void sch(int a[],int b[],int c[])
{
int i,imp,aux;
imp = 0;
c[0] = a[0];
for(i = 1; i <= c[0]; i++)
{
aux = a[i] - b[i] - imp;
if(aux < 0)
{
aux += 10;
c[i] = aux % 10;
imp = 1;
}
else
{
c[i] = aux;
imp = 0;
}
}
while(c[0] > 1 && c[c[0]] == 0)
c[0]--;
}
void prodh(int a[],int k,int c[])
{
c[0] = a[0];
int i,tr,aux;
for(i = 1;i <= a[0];i++)
c[i] = a[i] * k;
tr = 0;
for(i = 1;i <= c[0];i++)
{
aux = c[i] + tr;
c[i] = aux % 10;
tr = aux / 10;
}
while(tr)
{
c[++c[0]] = tr % 10;
tr /= 10;
}
}
int main()
{
freopen("hugenr.in", "r",stdin);
freopen("hugenr.out", "w",stdout);
int a[100],b[100],c[100];
int n,i;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
char sir[100];
gets(sir);
n = strlen(sir);
for(i = n - 1; i >= 0; i--)
a[n - i] = sir[i] - 48;
a[0] = n;
gets(sir);
n = strlen(sir);
for(i = n - 1; i >= 0; i--)
b[n - i] = sir[i] - 48;
b[0] = n;
adh(a,b,c);
printh(c);
printf("%d\n",comp(a,b));
if(comp(a,b) >= 0)
{
sch(a,b,c);
printh(c);
}
else
{
sch(b,a,c);
printf("-");
printh(c);
}
int x;
scanf("%d", &x);
prodh(a,x,c);
printh(c);
return 0;
}