Advertisement
Saleh127

UVA 10780

Aug 10th, 2020
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define maX 10008
  4. #define ll long long
  5. vector<ll>p;
  6. bool marked[maX];
  7. void sieve()
  8. {
  9. marked[0]=1;
  10. marked[1]=1;
  11. for(ll i=4; i<=maX; i+=2)
  12. {
  13. marked[i]=1;
  14. }
  15. p.push_back(2);
  16. for(ll i=3; i<=maX; i+=2)
  17. {
  18. if(marked[i]==0)
  19. {
  20. p.push_back(i);
  21. for(ll j=i*i; j<=maX; j+=i+i)
  22. {
  23. marked[j]=1;
  24. }
  25. }
  26. }
  27. }
  28.  
  29.  
  30. int main()
  31. {
  32. ios_base::sync_with_stdio(0);
  33. cin.tie(0);
  34. cout.tie(0);
  35.  
  36. sieve();
  37. ll t;
  38. cin>>t;
  39. for(ll x=1; x<=t; x++)
  40. {
  41. ll n,m;;
  42.  
  43. cin>>m>>n;
  44.  
  45. cout<<"Case "<<x<<":"<<endl;
  46.  
  47. if(m==1 || n==1)
  48. {
  49. cout<<"Impossible to divide"<<endl;
  50. }
  51. else
  52. {
  53. map<ll, ll>xx;
  54. map<ll, ll>::iterator it;
  55.  
  56. ll c,d,i,j,k,l=0,ans=100000;
  57. k=m;
  58.  
  59. for(i=0;p[i]<=sqrt(k);i++)
  60. {
  61. if(k%p[i]==0)
  62. {
  63. while(k%p[i]==0)
  64. {
  65. k=k/p[i];
  66. xx[p[i]]++;
  67. }
  68. }
  69. }
  70. if(k>1) xx[k]++;
  71.  
  72. for(it=xx.begin();it!=xx.end();it++)
  73. {
  74. c=0;
  75. d=n;
  76. while(d)
  77. {
  78. c+=(d/it->first);
  79. d=(d/it->first);
  80. }
  81. if(c<it->second)
  82. {
  83. l=1;
  84. break;
  85. }
  86. ans=min(ans,c/it->second);
  87. }
  88. if(l==1) cout<<"Impossible to divide"<<endl;
  89. else cout<<ans<<endl;
  90.  
  91. }
  92. }
  93. return 0;
  94. }
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement