O solutie de incepator (citeste datele din fisierul "fisier2" care are pe prima linie s si n separate printr-un spatiu si pe a doua sirul de numere) #include <stdio.h> int produs(int numere[2][100],int &i,int n) { long produs = 1; produs*=numere[0][i]; if (numere[1][i]==0) produs*=-1; i++; while(numere[0][i]==2 && i<n) { produs*=numere[0][i]; } i--; return produs; } int calcul(int numere[2][100],int n) { int i; long sum=0; for (i=0;i<n;i++) { if (numere[1][i]==0 &&numere[1][i+1]!=2) sum-=numere[0][i]; else if (numere[1][i]==1 && numere[1][i+1]!=2) sum+=numere[0][i]; else sum+=produs(numere,i,n); } return sum; } int main() { int numere[2][100],n; long s,sum=0; int i; //citire si initializare FILE * rfile; rfile = fopen("fisier2","r"); fscanf(rfile,"%d %d",&s, &n); for (i=0;i<n;i++) { fscanf(rfile,"%d",&numere[0][i]); numere[1][i]=0; } //adunare baza 3 for(sum=calcul(numere,n);sum!=s;sum=calcul(numere,n)) { numere[1][0]++; for (i=0;i<n;i++) { if (numere[1][i]>2) { numere[1][i]=0; numere[1][i+1]++; } } } //afisare for (i=0;i<n;i++) { if(numere[1][i]==0) printf("-"); if(numere[1][i]==1) printf("+"); if(numere[1][i]==2) printf("*"); printf("%d",numere[0][i]); } printf("=%d\n",sum); }