Buonasera a tutti.
Stavo cercando di ottimizzare il codice di cabala e sono arrivato a questo codice, che funziona con gli esempi e con i primi 3 testcase, ma il resto è tutto errato, dandomi un punteggio di 10/100. Qualcuno mi aiuterebbe?
Il codice in questione:
#include <stdio.h>
#include <assert.h>
#include<vector>
#include<cmath>
using namespace std;
long long to_int(vector<int> &numarr, int dim){
long long temp=0, molt=1;
for(int i=0; i<dim; i++){
temp+=numarr[i]*molt;
molt*=10;
}
return temp;
}
long long occulta(int N, int M,int dim, vector<int> numarr, int pn){
if(N==dim){
return to_int(numarr, dim+1)%M;
}
long long r=0, gr=0, temp;
for(int i=1; i<=3; i++){
numarr[dim]=i*3;
if(pn!=i*3){
r=occulta(N,M,dim+1,numarr,i*3);
if(gr<r){
gr=r;
}
temp=to_int(numarr, dim+1)%M;
if(gr<temp){
gr=temp;
}
}
}
return gr;
}
int main() {
FILE *fr, *fw;
int T, N, M, i;
vector<int> numarr;
long long p=0, r=0;
fr = fopen("input.txt", "r");
fw = fopen("output.txt", "w");
assert(1 == fscanf(fr, "%d", &T));
for (i=0; i<T; i++) {
assert(2 == fscanf(fr, "%d %d", &N, &M));
numarr.clear();
numarr.resize(N,0);
fprintf(fw, "%lld ", occulta(N, M,0, numarr,0));
}
fprintf(fw, "\n");
fclose(fr);
fclose(fw);
return 0;
}