Pagini recente » Cod sursa (job #1417504) | Cod sursa (job #348783) | Cod sursa (job #2117132) | Cod sursa (job #1742251) | Cod sursa (job #68393)
Cod sursa(job #68393)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define FIN "sarpe.in"
#define FOUT "sarpe.out"
#define MAX_LEN 1024
char S[MAX_LEN];
int N[MAX_LEN], M[MAX_LEN];
void mul(int a[], int b[])
{
int i, j, t, c[MAX_LEN] = {0};
for (i = 1; i <= a[0]; i++)
{
for (j = 1, t = 0; j <= b[0] || t; j++, t /= 10)
c[i+j-1] = (t += c[i+j-1] + a[i]*b[j]) % 10;
if (c[0] < i+j-2) c[0] = i+j-2;
}
copy(c, c+MAX_LEN, a);
}
void add_mul(int a[], int b, int c)
{
int i, t = b;
for (i = 1; i <= a[0] || t; i++, t /= 10)
a[i] = (t += a[i]*c) % 10;
a[0] = i-1;
}
int main(void)
{
int i;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%s", S);
for (i = strlen(S)-1; i >= 0; i--)
N[++N[0]] = S[i]-'0';
copy(N, N+MAX_LEN, M);
for (i = 1; i <= M[0] && M[i] == 0; i++)
M[i] = 9;
M[i]--;
mul(N, M);
add_mul(N, 0, 2);
add_mul(N, 4, 1);
for (i = N[0]; i > 0; i--)
printf("%d", N[i]);
printf("\n");
return 0;
}