Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define fore(x1,y1) for( long long x1=0;x1<y1;++x1)
- #define INF 1e9
- #define all(x2) begin(x2),end(x2)
- using ull= long long;
- int phi (int n) {
- int result = n;
- for (int i=2; i*i<=n; ++i)
- if (n % i == 0) {
- while (n % i == 0)
- n /= i;
- result -= result / i;
- }
- if (n > 1)
- result -= result / n;
- return result;
- }
- int gcd (int a, int b) {
- if (b == 0)
- return a;
- else
- return gcd (b, a % b);
- }
- int g(int a,int n){
- int j=0;
- for(int i=n-1;i>=1;--i){
- if(i==1)
- ++j;
- else if(gcd(i,n)==1)
- ++j;
- if(j==a)
- return i;
- }
- }
- int main() {
- /* cout.setf(ios::fixed);
- cout.precision(5);*/
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- int n,k;
- cin>>k>>n;
- int num=0;
- int p=-1,q=-1;
- vector<int>v;
- for(int i=1;i<=sqrt(n) || (n==3 && i<=3) ||i==2;++i) {
- if (n % i != 0)
- continue;
- if (i * i < n && i!=1)
- v.push_back(i);
- int f = phi(n/i);
- num = f;
- int ch=k - num;
- if (ch <= 0) {
- p = g(k, n/i);
- q = n/i;
- break;
- }
- k-=num;
- }
- if(q==-1 && v.size()!=0)
- for(auto i=v.end()-1;;--i){
- int f = phi(*i);
- num = f;
- int ch=k - num;
- if (ch <= 0) {
- p = g(k, *i);
- q = *i;
- break;
- }
- k-=num;
- if(i==v.begin())
- break;
- }
- if(q==-1)
- cout<<q;
- else
- cout<<p<<' '<<q;
- }
Advertisement
Add Comment
Please, Sign In to add comment