fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5.  
  6.  
  7.  
  8. int main()
  9. {
  10. bool arr[1000001]={0};
  11. vector<long long> MyPrimes;
  12. int Q;
  13. int w;
  14. arr[0]=1;
  15. arr[1]=1;
  16. for(Q=2;Q<=100000;Q++)
  17. {
  18. if(arr[Q]==0);
  19. for(w=Q*2;w<=1000000;w+=Q)
  20. {
  21. arr[w]=1;
  22. }
  23. }
  24.  
  25. for(Q=1;Q<=1000000;Q++)
  26. {
  27. if(arr[Q]==0)
  28. MyPrimes.push_back(Q);
  29.  
  30. }
  31. int q,e,r;
  32. long long a,b;
  33.  
  34. cin>>a>>b;
  35.  
  36. if(a==b)
  37. {
  38. cout<<"infinity\n";
  39. return 0;
  40. }
  41. if(b>a)
  42. {
  43. cout<<0<<"\n";
  44. return 0;
  45. }
  46.  
  47. long long SOL=a-b;
  48. vector<long long> MyPrimeFactors;
  49. set<int>SOLUIONZZZZ;
  50.  
  51. for(q=0;q<MyPrimes.size();q++)
  52. {
  53.  
  54. while(SOL%MyPrimes[q]==0)
  55. {
  56.  
  57.  
  58.  
  59. MyPrimeFactors.push_back(MyPrimes[q]);
  60.  
  61.  
  62. SOL=SOL/MyPrimes[q];
  63.  
  64.  
  65. }
  66. }
  67.  
  68. if(SOL>1000000)
  69. MyPrimeFactors.push_back(SOL);
  70.  
  71. long long Limit=pow(2,MyPrimeFactors.size())+0.5;
  72. Limit--;
  73.  
  74. long long mysolution=0;
  75. for(q=0;q<=Limit;q++)
  76. {
  77. long long Currentdiv=1;
  78. for(w=0;w<MyPrimeFactors.size();w++)
  79. {
  80. long long current=(1<<w);
  81. if(q&current)
  82. Currentdiv*=MyPrimeFactors[w];
  83. }
  84.  
  85. if(Currentdiv>b)
  86. {
  87.  
  88. SOLUIONZZZZ.insert(Currentdiv);
  89. }
  90. }
  91. cout<<SOLUIONZZZZ.size()<<"\n";
  92.  
  93.  
  94.  
  95.  
  96.  
  97. return 0;
  98. }
  99.  
Time limit exceeded #stdin #stdout 5s 5360KB
stdin
536870914 2
stdout
Standard output is empty