Initiate

Call A Spade a Spade
posts - 14, comments - 3, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

POJ1023

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 查看评论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理