题目大意:有趣的数字系统
在一个k位的2的补码,,位的索引是从0到k-1位的,值是-2^(k-1),其他位置的i是2^i( (0 ≤ i < k-1) ),例如,3位的数字101是-2^2 + 0 + 2^0 = -3,一个负权值叫做一个negabit, 例如最高位的2的补码,一个正的位权值叫做一个possibit。
一个趣味数字系统是一个二进制数字系统,每一位也可以是一个negabit或者一个negabit,例如认为一个3位趣味数字系统趣味3,位在位置0那里,并且2是posibits.
明白了就是先给一个数字说这个数字的二进制有多少位,然后按照给的字符串正负方式能不能得到下面的数,不能就是impossible能就输出那个字符串
需要考虑负数的情况->千万不要忘记

#include<iostream>

#include<string>
using namespace std;
int main()
{
    int T;
    cin >> T;
    while(T--)
    {
        int i, j, k;
        long long m;
        int a[100]={0}, b[100]={0};
        string s;
        cin >> k >> s >> m;
        int op=1;
        if(m<0)
            op=0, m=-m;
        for(i=0,j=k-1; i<k; i++, j--)
        {
            if(s[i] == 'n' && op)
                b[j] = 1;
            else if(s[i]=='p' && !op)
                b[j] = 1;
            a[i] = m%2;
            m/=2;
        }
        for(i=0; i<=k; i++)
        {
            a[i+1] += a[i]/2;
            a[i] %= 2;
            if(a[i] && b[i])
                a[i+1]++;
        }
        if(a[k] || a[k+1] || m)
            cout << "Impossible" <<endl;
        else
        {
            for(i=k-1; i>=0; i--)
                cout << a[i];
            cout << endl;
        }
    }
    return 0;
}

poj1023的更多相关文章

  1. POJ1023 The Fun Number System

    题目来源:http://poj.org/problem?id=1023 题目大意: 有一种有趣的数字系统.类似于我们熟知的二进制,区别是每一位的权重有正有负.(低位至高位编号0->k,第i位的权 ...

随机推荐

  1. System.Data.DbType的字符串和数据库中字符串类型对应关系

    前两天项目中因为历史原因数据库中的一个字段是varchar类型,在做SQL参数化处理时候默认都是DbType.String, 免得查询出现数据转换,于是做类型一致,搜了下对应关系还没找到,只好自己打开 ...

  2. this的一个作用 当前对象

    class Person{ String name="小花"; int age=19; void eat(){  System.out.println("在吃饭" ...

  3. NOIP2012 借教室 Splay初探

    终于把区间操作的Splay搞明白了…… Splay的大致框架是这样的: [代码中的Zig-Zig和Zig-Zag操作其实是可以优化的,实际只需要3次passDown和3次update] templat ...

  4. 【POJ3481】【splay】Double Queue

    Description The new founded Balkan Investment Group Bank (BIG-Bank) opened a new office in Bucharest ...

  5. 赋值,copy和deepcopy

    python的复制,拷贝,和深拷贝. >>> a=[23,3]>>> b=a>>> b.append(234)>>> a[23, ...

  6. js string操作总结

    var str = "0123456789"; console.log(str.substring(0)); //------------"0123456789" ...

  7. visual studio中验证控件的使用

    1.RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交信息. RequiredFieldValidator控件中,主要设置三个属性: (1)ErrorM ...

  8. python进度条代码

    import sys import time def view_bar(num,total): rate = num / total rate_num = int(rate * 100) r = ' ...

  9. [原创]用python写了一个简单的markdown编辑器

    以前我常用openoffice记录东西,最喜欢它的当然是在linux上能用了,还有里面的公式输入,前几天才了解markdown这个东东,初步了解发现它正是我需要的东西,可以用它随心所欲地记录些东西,而 ...

  10. hdu 1229 超级大水题

      Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status Desc ...