Guest User

Untitled

a guest
Sep 1st, 2022
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. //Har Har Mahadev
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. const int inf = 1e9 + 50;
  6. int main(){
  7.     ios::sync_with_stdio(false);cin.tie(0);
  8.     int tt;
  9.     cin >> tt;
  10.     for(int t = 1;t <= tt;t++){
  11.         int n;
  12.         vector<int> hai(10);
  13.         for(int i = 0; i < 10; i++){
  14.             cin >> hai[i];
  15.         }
  16.         cin >> n;
  17.         int old = n;
  18.         n = max(n,20);
  19.         vector<bool> pos(n+1,false);
  20.         vector<int> siz(n+1,0);
  21.        
  22.         for(int i = 0; i < 10; i++){
  23.             pos[i] = hai[i];
  24.             siz[i] = 1;
  25.         }
  26.        
  27.         for(int i = 10; i <= n; i++){
  28.             pos[i] = pos[i/10] & pos[i%10];
  29.             siz[i] = 1 + siz[i/10];
  30.         }
  31.        
  32.         vector<int> dp(n+1,inf);
  33.        
  34.         for(int i = 1; i <= n; i++){
  35.             if(pos[i]){
  36.                 dp[i] = min(dp[i],(int)to_string(i).size());
  37.             }
  38.             for(int j = i+i; j <= n; j += i){
  39.                 if(pos[j/i]){
  40.                     dp[j] = min(dp[j],1 + siz[j / i] + dp[i]);
  41.                 }
  42.             }
  43.         }
  44.         n = old;
  45.         cout << "Case #" << t << ": ";
  46.         if(dp[n] == inf){
  47.             cout << "Impossible\n";
  48.         }
  49.         else{
  50.             cout << 1 + dp[n] << '\n';
  51.         }
  52.     }
  53.    
  54.     return 0;
  55. }
  56.  
Advertisement
Add Comment
Please, Sign In to add comment