Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Har Har Mahadev
- #include <bits/stdc++.h>
- using namespace std;
- const int inf = 1e9 + 50;
- int main(){
- ios::sync_with_stdio(false);cin.tie(0);
- int tt;
- cin >> tt;
- for(int t = 1;t <= tt;t++){
- int n;
- vector<int> hai(10);
- for(int i = 0; i < 10; i++){
- cin >> hai[i];
- }
- cin >> n;
- int old = n;
- n = max(n,20);
- vector<bool> pos(n+1,false);
- vector<int> siz(n+1,0);
- for(int i = 0; i < 10; i++){
- pos[i] = hai[i];
- siz[i] = 1;
- }
- for(int i = 10; i <= n; i++){
- pos[i] = pos[i/10] & pos[i%10];
- siz[i] = 1 + siz[i/10];
- }
- vector<int> dp(n+1,inf);
- for(int i = 1; i <= n; i++){
- if(pos[i]){
- dp[i] = min(dp[i],(int)to_string(i).size());
- }
- for(int j = i+i; j <= n; j += i){
- if(pos[j/i]){
- dp[j] = min(dp[j],1 + siz[j / i] + dp[i]);
- }
- }
- }
- n = old;
- cout << "Case #" << t << ": ";
- if(dp[n] == inf){
- cout << "Impossible\n";
- }
- else{
- cout << 1 + dp[n] << '\n';
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment