Pagini recente » Cod sursa (job #1454577) | Istoria paginii runda/1concurs1 | Istoria paginii runda/concurs_11_12_02_23/clasament | Profil soldatuldeplatina | Cod sursa (job #1371675)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define SIZE 1000023
#define base 10
FILE *fin, *fout;
using namespace std;
int n[SIZE], d[SIZE], tmp[SIZE];
char s[SIZE];
bool check(int a[SIZE], int b[SIZE])
{
if(a[0] < b[0]) return 1;
if(a[0] > b[0]) return 0;
for(int i = a[0]; i>=1; i--)
{
if(a[i] < b[i]) return 1;
if(a[i] > b[i]) return 0;
}
return 0;
}
void adunare(int a[SIZE], int b[SIZE])
{
int carry = 0, temp;
a[0] = max(a[0], b[0]);
for(int i = 1; i<=a[0]; i++)
{
temp = a[i] + b[i] + carry;
a[i] = temp%base;
carry = temp/base;
}
if(carry)
{
a[0]++;
a[a[0]] = carry;
}
}
void afisare(int a[SIZE])
{
for(int i = a[0]; i>=1; i--) printf("%d", a[i]);
printf("\n");
}
int main()
{
fin = freopen("next.in", "r", stdin);
fout = freopen("next.out", "w", stdout);
scanf("%s", s);
n[0] = strlen(s);
for(int i = 1; i<= n[0]; i++) n[i] = s[n[0]-i] - '0';
scanf("%s", s);
d[0] = strlen(s);
for(int i = 1; i<= d[0]; i++) d[i] = s[d[0]-i] - '0';
for(; ;)
{
if(check(tmp, n) == 0) break;
adunare(tmp, d);
}
afisare(tmp);
fclose(fin);
fclose(fout);
return 0;
}