buongiorno, è da un pò di giorni che sto provando a risolvere il problema Numero della cabala(questo), mi chiedevo se qualcuno potesse aiutarmi.
#include <stdio.h>
#include <assert.h>
using namespace std;
long long int maxr, rest;
void solve(int N, int M, long long int cifre){
if (N == 0){
return;
}
if(3 == cifre%10){
cifre *= 10;
cifre += 6;
rest = cifre%M;
if(rest > maxr){
maxr = rest;
}
solve(N-1, M, cifre);
cifre += 3;
rest = cifre%M;
if(rest > maxr){
maxr = rest;
}
solve(N-1, M, cifre);
}
if(6 == cifre%10){
cifre *= 10;
cifre += 3;
rest = cifre%M;
if(rest > maxr){
maxr = rest;
}
solve(N-1, M, cifre);
cifre += 6;
rest = cifre%M;
if(rest > maxr){
maxr = rest;
}
solve(N-1, M, cifre);
}
if(9 == cifre%10){
cifre *= 10;
cifre += 3;
rest = cifre%M;
if(rest > maxr){
maxr = rest;
}
solve(N-1, M, cifre);
cifre += 3;
rest = cifre%M;
if(rest > maxr){
maxr = rest;
}
solve(N-1, M, cifre);
}
}
long long occulta(int N, int M) {
maxr = 0, rest = 0;
solve(N, M, 3);
solve(N, M, 6);
solve(N, M, 9);
return maxr;
}
int main() {
FILE *fr, *fw;
int T, N, M, i;
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));
fprintf(fw, "%lld ", occulta(N, M));
}
fprintf(fw, "\n");
fclose(fr);
fclose(fw);
return 0;
}