Pagini recente » Cod sursa (job #1480701) | Cod sursa (job #2451200) | Cod sursa (job #2535978) | Cod sursa (job #2424451) | Cod sursa (job #92902)
Cod sursa(job #92902)
#include <stdio.h>
#include <string.h>
#define NMAX 3000
int P[NMAX], P4[NMAX], N1[NMAX], N2[NMAX], N;
char S[NMAX];
FILE *f;
int main()
{
int i, j;
f=fopen("sarpe.in", "r");
fgets(S,sizeof(S),f);
fclose(f);
for (N = strlen(S)-1, i = 0; i < N; i++) N1[N-1-i] = N2[N-1-i] = S[i]-'0';
for (i = 0; i < N; i++) P4[i] = N1[i]<<2;
N1[0]--; N2[0]-=2;
for (i = 0; i < NMAX; i++){
if (N1[i]<0) N1[i]+=10, N1[i+1]--;
if (N2[i]<0) N2[i]+=10, N2[i+1]--; }
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
P[i+j] = P[i+j]+N1[i]*N2[j];
for (i = 0; i < NMAX; i++) P[i] = P[i]<<1;
for (i = 0; i < NMAX; i++) {
while (P[i]>9) P[i+1] += (P[i]/10), P[i] %= 10;
if (P4[i]>9) P4[i+1] += (P4[i]/10), P4[i] %= 10; }
for (i = 0; i < NMAX; i++) P[i] += P4[i];
for (i = 0; i < NMAX; i++)
if (P[i]>9) P[i+1] += (P[i]/10), P[i] %= 10;
for (i = NMAX-1; i >= 0 && !P[i]; i--);
f = fopen("sarpe.out", "w");
for (; i >= 0; i--) fprintf(f,"%d", P[i]);
fprintf(f,"\n");
fclose(f);
return 0;
}