Pagini recente » Cod sursa (job #1957341) | Cod sursa (job #2888434) | Cod sursa (job #504748) | Cod sursa (job #2878716) | Cod sursa (job #67491)
Cod sursa(job #67491)
#include <stdio.h>
#include <string.h>
const int N_MAX = 1024;
int N[N_MAX], N2[N_MAX];
void sub2(int v[])
{
int i, j;
if (v[1] >= 2) {
v[1] -= 2;
} else {
v[1] = 10 + v[1] - 2;
for (i = 2; i <= v[0] && v[i] == 0; i ++);
v[i] --;
for (j = 2; j < i; j ++) {
v[j] = 9;
}
}
}
void mul(int v[], int x)
{
int i, t = 0;
for (i = 1; i <= v[0] || t; i ++, t /= 10) {
v[i] = (t += v[i] * x) % 10;
}
v[0] = i - 1;
}
void add(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0] || i <= B[0] || t; i ++, t /= 10) {
A[i] = (t += A[i] + B[i]) % 10;
}
A[0] = i - 1;
}
void afis(int v[])
{
int i;
for (i = v[0]; i >= 1; i --) {
printf("%d", v[i]);
}
printf("\n");
}
int main()
{
freopen("sarpe.in", "r", stdin);
#ifndef _SCREEN_
freopen("sarpe.out", "w", stdout);
#endif
char x;
while (scanf("%c", &x) != EOF) {
if ('0' <= x && x <= '9') {
N[++ N[0]] = x - '0';
}
}
int i, aux;
for (i = 1; i <= N[0] / 2; i ++) {
aux = N[i];
N[i] = N[N[0] - i + 1];
N[N[0] - i + 1] = aux;
}
memcpy(N2, N, sizeof(N));
mul(N, 4);
sub2(N2);
mul(N2, 4);
add(N, N2);
afis(N);
return 0;
}