pku acm 1023
来源:互联网 发布:ipad淘宝怎么开店 编辑:程序博客网 时间:2024/04/30 10:13
#include <iostream>#include <cstdio>#include <string>#include <limits>#include <cmath>#include <algorithm>using namespace std;class Funk{public:typedef long long LL;typedef unsigned long long ULL;private:int nbits;//位数string sbits;//每一位的正负情况ULL max,min;bool flg;//标记最小数的符号void initmaxmin(){//cout<<"sbits.size = "<<sbits.size()<<endl;max = 0,min = 0;flg = false;for(int i = nbits-1; i >= 0; i--){if(sbits[i] == 'p'){max += (ULL)(pow(2.0,nbits-i-1));}else //sbits[i] == 'n'{flg = true;min += (ULL)(pow(2.0,nbits-i-1));}//cout<<"i = "<<i<<" "<<decToBin(min)<<endl;}if(flg == false)min = 0;}public:Funk(string s):sbits(s){nbits = sbits.size();initmaxmin();}Funk(int n,string s):nbits(n),sbits(s){initmaxmin();}//10进制数到2进制数的转换string decToBin(ULL n)// n >= 0{if(n == 0)return "0";if(n == 1)return "1";string s;while(n > 1){if(n%2 == 0)s.push_back('0');if(n%2 == 1)s.push_back('1');n /= 2;}s.push_back('1');reverse(s.begin(),s.end());return s;}string representation(LL N){if(N < 0){if(flg == false)return "Impossible";if(N*(-1) > min)return "Impossible";}if(N > 0 && N > max)return "Impossible";ULL tmp = N + min;string s = decToBin(tmp);if(s.size() < nbits){string t(nbits-s.size(),'0');t += s;s = t;}//cout<<"s.size = "<<s.size()<<endl;for(int i = 0; i < nbits; i++){if(sbits[i] == 'n'){s[i] = (s[i] == '0')?'1':'0';}}return s;}};int main(){freopen("in.txt","r",stdin);/*freopen("out.txt","w",stdout);*//*cout<<numeric_limits<long long>::min()<<endl;cout<<numeric_limits<long long>::max()<<endl;cout<<numeric_limits<unsigned long long>::max()<<endl;*/int t; // 1 <= t <= 10int k; // 1 <= k <= 64string s;Funk::LL N; //-2^63 ≤ N < 2^63cin>>t;while(t--){cin>>k>>s>>N;Funk f(k,s);cout<<f.representation(N)<<endl;}return 1;}
测试数据:
6
64
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
-9223372036854775808
1
n
2
5
ppppp
0
5
nnnnn
-32
5
nnnnn
-31
5
nnnnn
1
5
nnnnn
0
3
pnp
6
4
ppnn
10
结果如下:
1000000000000000000000000000000000000000000000000000000000000000
Impossible
00000
Impossible
11111
Impossible
- pku acm 1023
- pku-acm
- ACM-PKU
- PKU ACM 题目分类
- acm pku 1088 滑雪
- PKU ACM 1579
- PKU ACM 1163
- PKU ACM 1125
- PKU ACM 2081
- Pku acm 2250 Compromise
- PKU ACM 1004
- PKU ACM 1045
- PKU ACM 1046
- PKU ACM 1003
- acm PKU题型分类
- 滑雪-PKU ACM 1088
- ACM PKU 1177 Picture
- PKU ACM 1159-Palindrome
- 开机密码破解
- Winform中的linq to XML和listview
- java get乱码
- ASP.NET MVC2.0实现数据的增、删、改、查(续)客户端验证
- 我们是不是把MVC、ORM等技术的主次颠倒了?
- pku acm 1023
- Java基础(三)
- 线程上下文与ClassLoader
- 推荐Android开发学习网站
- ffmpeg+sdl教程----编写一个简单的播放器7(处理快进快退命令)
- Rational产品部署方案—CQ,CC,DOORS
- 部门网站到底应该是一种什么样的系统架构?
- 总结项目中的文档
- 我的新概念英语第四册