diff --git a/B.cpp b/B.cpp new file mode 100644 index 0000000..3eecc64 --- /dev/null +++ b/B.cpp @@ -0,0 +1,63 @@ +#include + +using namespace std; +int a[100]; +long long int n,m; +bool s=false; +long long int b[100]; +bool dfs(long long int remain,long long now,int now_layer) +{ + if ((now_layer==0)&&(remain==0)) return true; + if (now_layer==0) return false; + if (remain==0) return false; + if (remain>=2*now) return false; + if (remain+2*now<=0) return false; + long long nextint=now/2; + if (remain>0) + { + remain=remain-now; + int xx=now_layer-1; + a[xx]=1;//"+" + b[xx]=now; + return dfs(remain,nextint,now_layer-1); + } + else + { + remain=remain+now; + int xx=now_layer-1; + a[xx]=2;//"-" + b[xx]=now; + return dfs(remain,nextint,now_layer-1); + } + +} +int main() +{ + int t; + cin>>t; + for (int tt=1;tt<=t;tt++) + { + cin>>n>>m; + + s=false; + long long int min_number=1<<(m-1); + long long int max_number=(1<=min_number;i--) + { + if (dfs(n,i,m)) + { + s=true; + break; + } + } + cout<<"Case #"< +#include +#include +using namespace std; +int ans; +int x,y; +int gcd(int a,int b) +{ + while (b) + { + int t=b; + b=a%b; + a=t; + } + return a; +} + +int main() +{ + int t; + scanf("%d",&t); + for (int tt=0;tt