Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int v[19];
- long long dp[524300][20];
- int rest[300];
- int main()
- {
- ifstream fin ("ratphu.in");
- ofstream fout ("ratphu.out");
- long long n;
- int p;
- fin >> n >> p;
- int nr_cifre=0;
- for (int i = 0; i<300; ++i)
- rest[i] = i%p;
- while (n)
- {
- v[nr_cifre]=n%10;
- ++nr_cifre;
- n/=10;
- }
- dp[0][0]=1;
- int m = (1<<(nr_cifre))-1;
- for (int i = 0; i<m; ++i)
- {
- for (int j = 0; j<p; ++j)
- {
- if (dp[i][j])
- {
- for (int k=0; k<nr_cifre; ++k)
- {
- if ((i&(1<<k))==0)
- {
- dp[i|(1<<k)][rest[j*10+v[k]]]+=dp[i][j];
- }
- }
- }
- }
- }
- fout << dp[m][0];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement