Pagini recente » Cod sursa (job #5498) | Cod sursa (job #2484192) | Cod sursa (job #2103094) | Cod sursa (job #1269278) | Cod sursa (job #1207683)
#include<stdio.h>
int x[30], x1[30], x2[30], xpatrat[30];
//atriibuire
void AtribValue(int H[30], unsigned long X) {
H[0] = 0;
while (X) {
++H[0];
H[H[0]] = X % 10;
X /= 10;
}
}
//adunare
void Add(int A[30], int B[30])
/* A <- A+B */
{ int i,T=0;
if (B[0]>A[0])
{ for (i=A[0]+1;i<=B[0];) A[i++]=0;
A[0]=B[0];
}
else for (i=B[0]+1;i<=A[0];) B[i++]=0;
for (i=1;i<=A[0];i++)
{ A[i]+=B[i]+T;
T=A[i]/10;
A[i]%=10;
}
if (T) A[++A[0]]=T;
}
//inmultire
void MultHuge(int A[30], int B[30], int C[30])
/* C <- A x B */
{ int i,j,T=0;
C[0]=A[0]+B[0]-1;
for (i=1;i<=A[0]+B[0];) C[i++]=0;
for (i=1;i<=A[0];i++)
for (j=1;j<=B[0];j++)
C[i+j-1]+=A[i]*B[j];
for (i=1;i<=C[0];i++)
{ T=(C[i]+=T)/10;
C[i]%=10;
}
if (T) C[++C[0]]=T;
}
int main()
{
int T, N;
int i, j;
unsigned long long R, X, aux;
FILE *f = fopen("progresie.in", "r");
FILE *g = fopen("progresie.out", "w");
fscanf(f, "%d", &T);
for(j=1;j<=T;j++)
{
fscanf(f, "%d%u", &N, &R);
X = (N-1)*R + 1;
aux = X-1;
AtribValue(x, aux);
AtribValue(x1, X);
MultHuge(x, x1, xpatrat);
AtribValue(x2, 1);
Add(xpatrat, x2);
for(i=xpatrat[0];i>=1;i--)
fprintf(g, "%d", xpatrat[i]);
fprintf(g, "\n");
}
return 0;
}