func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> v;   map<int, long long> dp;   long long power(int a, long long b) {     long long res = 1, base = a;     while (b > 0) {       if (b % 2) {         res *= base;         res %= (1000 * 1000 * 1000 + 7);       }       base *= base;       base %= (1000 * 1000 * 1000 + 7);       b /= 2;     }     return res;   }   long long compute(int g) {     if (g == 1) {       return 1;     }     if (dp.find(g) != dp.end()) {       return dp[g];     }     long long val = power(2, g - 1);     int i;     for (i = 0; i < v.size(); i++) {       if (v[i] >= g) {         break;       }       if (g % v[i] == 0) val -= compute(v[i]);     }     dp[g] = val;     dp[g] %= (1000 * 1000 * 1000 + 7);     dp[g] += (1000 * 1000 * 1000 + 7);     dp[g] %= (1000 * 1000 * 1000 + 7);     return dp[g];   }   int main() {     std::ios::sync_with_stdio(false);     int x, y, val1, i;     cin >> x >> y;     if (y % x) {       cout << 0 << endl;     } else {       y /= x;       for (i = 1; i * i <= y; i++) {         if (y % i == 0) {           v.push_back(i);           if (y / i != i) v.push_back(y / i);         }       }       sort(v.begin(), v.end());       cout << compute(y);     }   }   