Salve, ho risolto questo problema con questo codice ma non mi da nessun punto, invece sul mio pc risolve benissimo qualsiasi input compresi i casi di esempio…
#include #include #include #include char Number[10]; int LengthNumber = 0; int PositionStars[10]; int NumStars=0; int GetNumber(int N){ int i,p=1,R=0; for( i = N; i--> 0; ){ R+= (Number[i]-'0')*p; p*=10; } return R; } int IsPrime(int N){ int divisore = 2; while ( divisore <= N/2 ){ if( N % divisore == 0) return 0; else divisore++; } return 1; } int MaxPrimes(int step = 0){ int Result = 0; int pos,k; pos = PositionStars[step]; if( step < NumStars ){ for( k = 0; k <= 9; ++k ){ Number[pos] = '0' + k; Result += MaxPrimes(step+1); } return Result; } else return IsPrime(GetNumber(LengthNumber)); } int main(){ FILE *in, *out; in = fopen("input.txt","r"); out = fopen("output.txt","w"); while ( fscanf(in,"%c",&Number[LengthNumber++]) != EOF) if( Number[LengthNumber-1] == '*' ) PositionStars[NumStars++] = LengthNumber-1; --LengthNumber; //Prende anche EOF fprintf(out,"%d",MaxPrimes()); fclose(in);fclose(out); return 0; }