Cod sursa(job #3126062)

Utilizator Tibi201eweREWR Tibi201 Data 5 mai 2023 16:12:04
Problema Patrate2 Scor 40
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>
#include <stdlib.h>
int puteri[3333],nr[3],r[3333];
int main()
{
    FILE *fin, *fout;
    int put,l1,l2,n,i,carry,j,n2;
    fin=fopen("patrate2.in", "r");
    fscanf(fin, "%d", &n);
    fclose(fin);
    nr[0]=2;
    puteri[0]=1;
    l1=l2=1;
    for(put=0, n2=n*n; put<n2; put++){
      for(i=0; i<l1; i++){
        for(j=0; j<l2; j++){
          r[i+j]=puteri[j]*nr[i];
        }
      }
      carry=0;
      for(i=0; i<l1+l2; i++){
        r[i]+=carry;
        carry=r[i]/10;
        puteri[i]=r[i]%10;
      }
      if(puteri[l1+l2-1]>0)
        l2=l1+l2;
      else
        l2=l1+l2-1;
    }
    for(put=2; put<=n; put++){
      nr[0]=put%10;
      nr[1]=(put/10)%10;
      nr[2]=put/100;
      l1=1;
      if(nr[1]>0)
        l1=2;
      if(nr[2]>0)
        l1=3;
      for(i=0; i<l1; i++){
        for(j=0; j<l2; j++){
          r[i+j]=puteri[j]*nr[i];
        }
      }
      carry=0;
      for(i=0; i<l1+l2; i++){
        r[i]+=carry;
        carry=r[i]/10;
        puteri[i]=r[i]%10;
      }
      if(puteri[l1+l2-1]>0)
        l2=l1+l2;
      else
        l2=l1+l2-1;
    }
    fout=fopen("patrate2.out", "w");
    for(i=l2-1; i>=0; i--)
      fprintf(fout, "%d", puteri[i]);
    fclose(fout);
    return 0;
}