Cod sursa(job #1180215)
| Utilizator | Data | 30 aprilie 2014 09:48:31 | |
|---|---|---|---|
| Problema | Dirichlet | Scor | 8 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
//back....
#include <fstream>
const int NMAX = 1000005;
const int MOD = 9999991;
using namespace std;
ifstream f("dirichlet.in");
ofstream g("dirichlet.out");
long long N, sol[NMAX], nrsol;
void bt(int k, int sum)
{
if (k == N+1)
{
if (sum == N)
nrsol++;
if (nrsol >= MOD)
nrsol -= MOD;
}
else
for (int i = 0; i <= k; ++i)
{
if (sum + i <= k)
{
sol[i] = i;
bt(k+1, sum + i);
}
}
}
int main()
{
f >> N;
bt(1,0);
g << nrsol;
f.close();
g.close();
return 0;
}
