Advertisement
a53

permeuler

a53
Dec 21st, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3.  
  4. int Phi(int n)
  5. {
  6. int d;
  7. unsigned long long int nrp=n,prod=1;
  8. if(n%2==0)
  9. {
  10. while(n%2==0)
  11. n/=2;
  12. nrp*=(2-1),prod*=2;
  13. }
  14. d=3;
  15. while(n>1)
  16. {
  17. if(n%d==0)
  18. {
  19. while(n%d==0)
  20. n/=d;
  21. nrp*=d-1,prod*=d;
  22. }
  23. else
  24. d+=2;
  25. if(n>1&&d*d>n)
  26. {
  27. nrp*=n-1,prod*=n;
  28. break;
  29. }
  30. }
  31. return (int) (nrp/prod);
  32. }
  33.  
  34. bool perm(int x,int y)
  35. {
  36. if(x==y)
  37. return false;
  38. int Cx[10],Cy[10];
  39. for(int i=0;i<=9;++i)
  40. Cx[i]=Cy[i]=0;
  41. while(x)
  42. ++Cx[x%10],x/=10;
  43. while(y)
  44. ++Cy[y%10],y/=10;
  45. for(int i=0;i<=9;++i)
  46. if(Cx[i]!=Cy[i])
  47. return false;
  48. return true;
  49. }
  50.  
  51. int main()
  52. {
  53. int x,sol=0;
  54. double Min=1000000000;
  55. ifstream f("permeuler.in");
  56. while(f>>x)
  57. {
  58. int p=Phi(x);
  59. if(perm(x,p))
  60. {
  61. double t=1.0*x/p;
  62. if(t<Min)
  63. Min=t,sol=x;
  64. }
  65. }
  66. ofstream g("permeuler.out");
  67. g<<sol;
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement