Advertisement
a53

TREIprime

a53
Dec 19th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #define ULL unsigned long long int
  4. using namespace std;
  5.  
  6. ULL divprimi(ULL n)
  7. {
  8. ULL d=2;
  9. while(n>1)
  10. {
  11. if(n%d==0)
  12. {
  13. return d;
  14. while(n%d==0)
  15. n/=d;
  16. }
  17. ++d;
  18. if(n>1&&d*d>n)
  19. cout<<n,n=1;
  20. }
  21. return n;
  22. }
  23.  
  24. ULL nroot(int n,ULL x)
  25. {
  26. if(x<0)
  27. x=-x;
  28. else
  29. if(x==0)
  30. return 0;
  31. double m,st=0,dr=x+0.01;
  32. while(dr-st>0.01)
  33. {
  34. m=(st+dr)/2;
  35. if(pow(m,n)>x)
  36. dr=m;
  37. else
  38. st=m;
  39. }
  40. return (ULL) dr;
  41. }
  42.  
  43. int main()
  44. {
  45. ULL n,m,sum,prod;
  46. ULL p,q,r;
  47. cin>>n>>m;
  48. p=divprimi(n);
  49. cout<<p<<' ';
  50. prod=n/p;
  51. sum=prod+1-m/(p-1);
  52. ULL delta=sum*sum-4*prod;
  53. q=(sum+nroot(2,delta))/2;
  54. r=prod/q;
  55. if(q<r)
  56. cout<<q<<' '<<r;
  57. else
  58. cout<<r<<' '<<q;
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement