2013年11月4日 星期一

[UVA] 12406 - Help Dexter


#include<stdio.h>
#include<vector>
using namespace std;
vector<long long int> vec;
int p,q;
int s[20];
void dfs(long long int x,int v){
    if(v==p){
        if(x%s[q]==0) vec.push_back(x);
        return;
    }
    dfs(x*10+1,v+1);
    dfs(x*10+2,v+1);
}
int main(){
    int t,i,add=1;
    for(i=0;i<19;i++){
        s[i]=add;
        add*=2;
    }
    scanf("%d",&t);
    for(i=1;i<=t;i++){
        scanf("%d%d",&p,&q);
        vec.clear();
        dfs(0,0);
        if(vec.size()==0) printf("Case %d: impossible\n",i);
        else if(vec.size()==1) printf("Case %d: %lld\n",i,vec[0]);
        else printf("Case %d: %lld %lld\n",i,vec[0],vec[vec.size()-1]);
    }
}

沒有留言:

張貼留言