Cod sursa(job #1438434)

Utilizator tsubyRazvan Idomir tsuby Data 19 mai 2015 22:48:39
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;

ifstream in("football.in");
ofstream out("football.out");

int S, T, moduri[30];
// moduri[i] == in cate moduri poate fi scris i
// ca suma de 1, 2, 3, 6

/*void genereazaModuri() {
    moduri[1] = moduri[2] = moduri[3] = moduri[6] = 1;
    for(int i = 2; i <= 25; i++) {
        if(i - 1 > 0)
            moduri[i] += moduri[i-1];
        if(i - 2 > 0)
            moduri[i] += moduri[i-2];
        if(i - 3 > 0)
            moduri[i] += moduri[i-3];
        if(i - 6 > 0)
            moduri[i] += moduri[i-6];
    }
}*/

int P[] = {1, 2, 3, 6};
int nr;

void backtrack(int c, int S) {
    if (c == S) {
        ++nr;
        return;
    }

    for (int i=0; i<4; ++i)
        if (c+P[i]<=S) backtrack(c+P[i], S);
}

int main()
{
   // genereazaModuri();
    in >> T;
    for(int i = 1; i <= T; i++) {
        in >> S;
        nr = 0;
        backtrack(0, S);
        out << "Case " << i << ": " << nr << endl;
    }
    return 0;
}