ABDELRHMAN_SAEED007

(USACO) D - Small Multiple

Aug 23rd, 2025
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. // #define int long long
  5. #define ld long double
  6. #define F first
  7. #define S second
  8. #define el '\n'
  9. #define cout(x) for(auto v:x)cout<<v<<' ';cout<<el
  10. #define coutp(x) for(auto v:x)cout<<v.F<<' '<<v.S<<el
  11. #define cin(x) for(auto &v:x)cin>>v;
  12. #define all(x)  x.begin(),x.end()
  13. #define ll long long
  14. #define sz(x)  (int)x.size()
  15. #define pi pair<ll,ll>
  16. using ull = unsigned long long;
  17. const int N=1e5+5;
  18. ll dis[N];
  19. void solve(){
  20.  
  21.     ll k;
  22.     cin>>k;
  23.  
  24.     for (int i=0;i<N;i++)dis[i]=1e9;
  25.     priority_queue<pi,vector<pi>,greater<pi>>pq;
  26.     for (int i=1;i<=9;i++)
  27.     {
  28.         ll r=i%k;
  29.         if (i<dis[r])
  30.         {
  31.             dis[r]=i;
  32.             pq.push({i,r});
  33.         }
  34.     }
  35.  
  36.     while (!pq.empty())
  37.     {
  38.         auto [d,r]=pq.top();
  39.         pq.pop();
  40.         // cout<<d<<" "<<r<<"\n";
  41.         if (d!=dis[r])continue;
  42.         if (r==0){
  43.             cout<<d<<"\n";
  44.             return;
  45.         }
  46.  
  47.         for (int i=0;i<=9;i++)
  48.         {
  49.             ll nr=(r*10+i)%k;
  50.             ll nc=d+i;
  51.             if (nc<dis[nr])
  52.             {
  53.                 pq.push({nc,nr});
  54.                 dis[nr]=nc;
  55.             }
  56.         }
  57.  
  58.     }
  59. }
  60.  
  61. int32_t main()
  62. {
  63.  
  64. #ifndef ONLINE_JUDGE
  65.      freopen("in.txt", "r", stdin);
  66.      //freopen("output.txt", "w", stdout);
  67. #endif
  68.  
  69.  
  70.     ios_base::sync_with_stdio(false);
  71.     cin.tie(NULL);
  72.     int tc = 1;
  73.     //cin >> tc;
  74.     for (int i = 1; i <= tc; i++)solve();
  75.     return 0;
  76. }
  77. /*
  78.  
  79.  */
  80.  
Advertisement
Add Comment
Please, Sign In to add comment