Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #define ULL unsigned long long int
- using namespace std;
- ULL divprimi(ULL n)
- {
- ULL d=2;
- while(n>1)
- {
- if(n%d==0)
- {
- return d;
- while(n%d==0)
- n/=d;
- }
- ++d;
- if(n>1&&d*d>n)
- cout<<n,n=1;
- }
- return n;
- }
- ULL nroot(int n,ULL x)
- {
- if(x<0)
- x=-x;
- else
- if(x==0)
- return 0;
- double m,st=0,dr=x+0.01;
- while(dr-st>0.01)
- {
- m=(st+dr)/2;
- if(pow(m,n)>x)
- dr=m;
- else
- st=m;
- }
- return (ULL) dr;
- }
- int main()
- {
- ULL n,m,sum,prod;
- ULL p,q,r;
- cin>>n>>m;
- p=divprimi(n);
- cout<<p<<' ';
- prod=n/p;
- sum=prod+1-m/(p-1);
- ULL delta=sum*sum-4*prod;
- q=(sum+nroot(2,delta))/2;
- r=prod/q;
- if(q<r)
- cout<<q<<' '<<r;
- else
- cout<<r<<' '<<q;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement