Posted on 2010-01-27 00:01
Initiate 阅读(183)
评论(0) 编辑 收藏 引用
题目63位,刚好可以用long long 可以不用高精。由于规定了每一位的正负,一个数是可以唯一标示的。
而在一定的位数下,由奇偶性即可确定最后一位是1还是0,经过b-1次之后即可确定原来的数字。
#include<iostream>
#include<string>
using namespace std;
string s;
int res[100],k,m;
long long n;
int main()
{
int t,b;
cin>>t;
while(t--)
{
k=0;
cin>>b;
m=b;
cin>>s;
cin>>n;
while(1)
{
b--;
if(b<0)
{
if(n==0){
for(int i=m-1;i>=0;i--)
cout<<res[i];
cout<<endl;}
else cout<<"Impossible"<<endl;
break;
}
else{
if(n%2==0)
{res[k++]=0;
n /= 2;
}
else{
res[k++]=1;
if(s[b]=='n')
n=(n+1)/2;
else if(s[b]=='p')
n=(n-1)/2;
}
}
}
}
return 0;
}
PS:LONGLONG不能递归?
阅读全文
类别:Poj 查看评论