Advertisement
Saleh127

Light oj(LO) 1141

May 12th, 2021
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define test int t; cin>>t; for(int cs=1;cs<=t;cs++)
  5. vector<ll>p[1005];
  6.  
  7. void factor()
  8. {
  9. ll i,j,n;
  10.  
  11. for(j=2; j<=1000; j++)
  12. {
  13. n=j;
  14. for( i=2; i*i<=n; i++)
  15. {
  16. if(n%i==0)
  17. {
  18. while(n%i==0)
  19. {
  20. n/=i;
  21. }
  22. p[j].push_back(i);
  23. }
  24. }
  25. if(n>1 && n!=j)
  26. {
  27. p[j].push_back(n);
  28. }
  29. }
  30. }
  31.  
  32. int main()
  33. {
  34. ios_base::sync_with_stdio(0);
  35. cin.tie(0);
  36. cout.tie(0);
  37.  
  38. factor();
  39.  
  40. test
  41. {
  42.  
  43. ll n,m,i,j,k,l=-1;
  44.  
  45. cin>>n>>m;
  46.  
  47. cout<<"Case "<<cs<<": ";
  48.  
  49. if(n==m) cout<<0<<endl;
  50. else if(p[n].size()==0) cout<<-1<<endl;
  51. else
  52. {
  53. ll ans[2000],u,v;
  54.  
  55. memset(ans,-1,sizeof ans);
  56.  
  57. queue<ll>q;
  58.  
  59. q.push(n);
  60.  
  61. ans[n]=0;
  62.  
  63. while(q.empty()==false)
  64. {
  65. u=q.front();
  66.  
  67. q.pop();
  68.  
  69. for(i=0;i<p[u].size();i++)
  70. {
  71. v = u + p[u][i];
  72.  
  73. if(v<=m && ans[v]==-1)
  74. {
  75. ans[v]=ans[u]+1;
  76.  
  77. q.push(v);
  78.  
  79. if(v==m)
  80. {
  81. l=ans[v];
  82. break;
  83. }
  84. }
  85. }
  86.  
  87. if(l>=0) break;
  88. }
  89.  
  90. cout<<l<<endl;
  91.  
  92. }
  93.  
  94. }
  95.  
  96.  
  97. return 0;
  98. }
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement