Pagini recente » Cod sursa (job #2149276) | Cod sursa (job #1864631) | Cod sursa (job #2019275) | Cod sursa (job #2355305) | Cod sursa (job #1374847)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define SIZE 10000023
#define base 10
FILE *fin, *fout;
using namespace std;
int n[SIZE], d[SIZE], tmp[SIZE], tmp2[SIZE], u;
char s[SIZE];
bool f;
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");
}
void inmultire(int a[SIZE], int b1)
{
int carry = 0, temp;
for(int i = 1; i<= a[0]; i++)
{
temp = a[i] * b1 + carry;
a[i] = temp%base;
carry = temp/base;
}
while(carry)
{
a[0]++;
a[a[0]] = carry%base;
carry/=base;
}
}
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(; ;)
{
//printf("check\n");
//afisare(tmp);
//afisare(tmp2);
//scanf("%d", &u);
if(check(tmp, n) == 0) break;
tmp2[0] = tmp[0];
for(int i = 1; i<= tmp[0]; i++) tmp2[i]= tmp[i];
if(f == 0)
{
adunare(tmp, d);
f = 1;
continue;
}
inmultire(tmp, 2000000000);
}
for(; ;)
{
//printf("check2\n");
//afisare(tmp2);
//scanf("%d", &u);
if(check(tmp2, n) == 0) break;
adunare(tmp2, d);
}
afisare(tmp2);
fclose(fin);
fclose(fout);
return 0;
}