Pagini recente » Cod sursa (job #2011952) | Cod sursa (job #202676) | Cod sursa (job #2856087) | Cod sursa (job #2013917) | Cod sursa (job #1001814)
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#define LG_MAX 1000000 + 1
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
int suma1[LG_MAX],modul[LG_MAX],rezultat[LG_MAX],n[LG_MAX],x[LG_MAX];
typedef int BigNumber[LG_MAX];
void citire(BigNumber x){
int i;
char s[LG_MAX];
f>>s;
x[0]=strlen(s);
for(i = x[0]-1; i >= 0; i--) x[x[0]-i] = s[i]-'0';
for(i = x[0]+1; i < LG_MAX; i++) x[i] = 0;
}
void afisare(BigNumber x)
{
for(int i = x[0]; i >= 1; i--)
g<<(x[i]);
}
void suma(BigNumber a,BigNumber b,BigNumber s)
{
int i,cifra,t = 0,max;
//completam numarul cel mai mic cu zeroouri nesemnificative
if(a[0] < b[0]) { max = b[0]; for(i = a[0]+1; i <= b[0]; i++) a[i] = 0; }
else { max = a[0]; for(i = b[0]+1; i <= a[0]; i++) b[i] = 0; }
for(i = 1; i <= max; i++)
{
cifra = a[i] + b[i] + t; //calculam noua cifra
s[i] = cifra % 10;
t = cifra/10; //calculam cifra de transport
}
if(t) s[i] = t; else i--;
s[0] = i;
}
void diferenta(BigNumber a,BigNumber b,BigNumber d)
{
int i,t = 0;
if(a[0] < b[0])
{
diferenta(a,b,d);
}
else
{
for(i = 1; i <= a[0]; i++)
{
d[i] = a[i]-b[i]+t; //diferenta
if(d[i] < 0) d[i]+= 10,t = -1; //calculam cifra de transport
else t = 0;
}
i--;
while(i && !d[i]) i--;
d[0] = i;
}
}
long long modulo( BigInteger A, long long B )
{
long long i, T = 0;
for ( i = A[0]; i; --i )
T = ( T * 10 + A[i] ) % B;
return T;
}
int main()
{citire(n);
citire(x);
//g<<(n+x)-(n+x)%x;
suma(n,x,suma1);
afisare(suma1);
return 0;
}