Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. long long euclid(long long a, long long b)
  5. {
  6. long long c;
  7. while (b)
  8. {
  9. c = a % b;
  10. a = b;
  11. b = c;
  12. }
  13. return a;
  14. }
  15. long long desc(long long n)
  16. {
  17. long long d,e,l,m;
  18. m=n;
  19. l=-1;
  20. d=2;
  21. e=0;
  22. while(n%d==0)
  23. {
  24. n=n/d;
  25. e++;
  26. }
  27. if(e>0)
  28. {
  29. //cout<<d<<" "<<e<<endl;
  30. l=e;if(l==1)return 0;
  31. }
  32. d=3;
  33. while(n>1)
  34. {
  35. e=0;
  36. while(n%d==0)
  37. {
  38. n=n/d;
  39. e++;
  40. }
  41. if(e>0)
  42. {
  43. //cout<<d<<" "<<e<<endl;
  44. if(l==-1)l=e;
  45. else l=euclid(l,e);
  46. if(l<=1)return 0;
  47. }
  48. if(d*d>=n)d=n;
  49. else d=d+2;
  50. }
  51. if(l<=1)return 0;
  52. return m;
  53. }
  54. long long jos(long long n,long long v)
  55. {
  56. long long m=n,p1,p2;
  57.  
  58. n++;
  59. do
  60. {
  61. n--;
  62. p1=desc(n);
  63. //cout<<n<<" "<<p1<<endl;
  64. }
  65. while(p1==0&&n>2);
  66. //cout<<p1<<" ";
  67. n=m;n--;
  68. do
  69. {
  70. n++;if(n-m>n-p1&&p1>0)return p1;
  71. p2=desc(n);
  72. //cout<<n<<" "<<p2<<endl;
  73. }
  74. while(p2==0&&n<v);
  75. //cout<<p2<<endl;
  76. if(p1==0)return p2;
  77. if(p2==0)return p1;
  78. if(m-p1<=p2-m)return p1;
  79. else return p2;
  80. }
  81. int main()
  82. {
  83. ifstream f("abx.in"); ofstream g("abx.out");
  84. long long n,m,x,i;
  85. f>>n>>m;
  86. for(i=1;i<=n;i++)
  87. {
  88. f>>x;
  89. g<<jos(x,m)<<endl;
  90.  
  91. }
  92. f.close();
  93. g.close();
  94. //cout<<desc(100);
  95. //cout<<euclid(2,2);
  96. return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement