Untitled
unknown
plain_text
2 years ago
1.1 kB
4
Indexable
#include <bits/stdc++.h> #define fst first #define snd second #define int64 long long #define FOR(i, a, b) for(int i = a; i <= b; i++) #define FORD(i, b, a) for(int i = b; i >= a; i--) using namespace std; typedef pair<int,int> ii; template<class X, class Y> bool maximize(X &a, Y b) { if(a >= b) return false; a = b; return true; } template<class X, class Y> bool minimize(X &a, Y b) { if(a <= b) return false; a = b; return true; } const int N = 1e6 + 66; int cnt[N]; int main () { int n, m; cin >> n >> m; for(int i = 2; i <= n; i++) { int current = i; for(int j = 2; j * j <= current; j++) { while(current % j == 0) { cnt[j]++; current /= j; } } if(current > 1) cnt[current]++; } int res = 1e9; for(int i = 2; i <= m; i++) { if(m % i == 0) { int d = 0; while(m % i == 0) { m /= i; d++; } if(d > cnt[i]) { cout << "-1\n"; return 0; } res = min(res, cnt[i] / d); } } cout << res; }
Editor is loading...
Leave a Comment