Advertisement
leoanjos

Particular Pupper

Jan 1st, 2022
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define long long long int
  6.  
  7. const int MAX = 2e6 + 5;
  8. const int MOD = 1e9 + 7;
  9.  
  10. long facts[MAX] = {1LL};
  11.  
  12. void extended_euclidean(long a, long b, long &x, long &y) {
  13.     if (!b) {
  14.         x = 1LL;
  15.         y = 0LL;
  16.     } else {
  17.         extended_euclidean(b, a % b, x, y);
  18.         long aux = x; x = y;
  19.         y = aux - a / b * y;
  20.     }
  21. }
  22.  
  23. long mod_mult_inv(long a, long m) {
  24.     long x, y;
  25.     extended_euclidean(a, m, x, y);
  26.     return (x % m + m) % m;
  27. }
  28.  
  29. long comb(int n, int k) {
  30.     long num = facts[n];
  31.     long den = (facts[k] * facts[n - k]) % MOD;
  32.     return (num * mod_mult_inv(den, MOD)) % MOD;
  33. }
  34.  
  35. int main() {
  36.     ios_base::sync_with_stdio(false);
  37.     cin.tie(NULL);
  38.  
  39.     for (int i = 1; i < MAX; i++)
  40.         facts[i] = (facts[i - 1] * i) % MOD;
  41.  
  42.     int x, y, n;
  43.     cin >> x >> y >> n;
  44.  
  45.     long ans = 0LL;
  46.     for (int i = 0; i <= n; i++) {
  47.         int sum = i * x + (n - i) * y;
  48.  
  49.         bool possible = true;
  50.         while (sum && possible) {
  51.             int d = sum % 10;
  52.             sum /= 10;
  53.  
  54.             if (d != x && d != y)
  55.                 possible = false;
  56.         }
  57.  
  58.         if (possible)
  59.             ans = (ans + comb(n, i)) % MOD;
  60.     }
  61.  
  62.     cout << ans << "\n";
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement