Description
Input
Output
Sample Input
2 3 pnp 6 4 ppnn 10
Sample Output
Impossible 1110
这个题~ 我这么笨 一定想不到简单的方法!!! 只有各种复杂办法 基本是不可行的
所以 必然需要求助!!
思路
1.n为奇数 最后一位一定是1,因为只有2的0次方可产生奇数,其他都为偶数。
最后一位若为p(正) 则n=(n-1)/2
若为n(负) 则n=(n+1)/2
n为偶数 最后一位一定是0,n=n/2
2.接下来判断倒数第二位 将其重复步骤1,直至判断完这个字符串系统
最后n若为0 则可表示出
n不为0 则结果为impossible
代码是这样
#include<iostream> #include<string> using namespace std; int main() { int t,k; cin>>t; while(t--){ __int64 n; string str; cin>>k>>str>>n; int j=0; int *p=new int[k]; for(int i=k-1;i>=0;i--){ if(n%2==1||n%2==-1){ if(str[i]==‘p‘)n=(n-1)/2; else n=(n+1)/2; p[j++]=1; } else { n/=2; p[j++]=0; } } if(n)cout<<"Impossible"<<endl; else { for(int i=j-1;i>=0;i--)cout<<p[i]; cout<<endl; } delete []p; } //system("pause"); return 0; }
F - The Fun Number System(第二季水)
原文:http://www.cnblogs.com/farewell-farewell/p/5189538.html