题目大意:有趣的数字系统
在一个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. 网站如何防Session冒名顶替和cookie防篡改

    做网站难免要面对安全性的问题,诸如sql注入拉,cookie冒名拉,等等,sql注入算是老生常谈,翻翻旧账有不少优秀的帖子在说明这个问题,所以我们来说说Session冒名顶替的风险以及应对的办法. 首 ...

  2. Plsql工具单步调试 存储过程或是 函数(oracle数据库)-留着自己用的

    <案例1> 原地址: http://jingyan.baidu.com/article/3a2f7c2e144d2826aed61167.html 调试过程对找到一个存过的bug或错误是非 ...

  3. ios strong weak 的区别 与 理解

    先一句话总结:strong类保持他们拥有对象的活着,weak类他们拥有的对象被人家一牵就牵走,被人家一干就干死.(strong是一个好大哥所以strong,呵呵,weak是一个虚大哥所以weak,呵呵 ...

  4. location传值

    location.href="url?p="+"value"; onclick="location.href='Card_query_where?qu ...

  5. struts2文件上传,文件类型 allowedTypes

    struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...

  6. delegate 中的BeginInvoke和EndInvoke方法

    开发语言:C#3.0 IDE:Visual Studio 2008 一.C#线程概述 在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能 ...

  7. 使用Raphael 画图(二) 扩展的图形 (javascript)

    看这文章前,建议先看第一编文章<使用Raphael 画图(一) 基本图形 (javascript)>. 在Raphael基础上扩展的图形: 要运行该例子要引入附件的2个js包.(g.rap ...

  8. 转:PHP之Traits

    原文来自于:http://www.cnblogs.com/tekkaman/archive/2012/12/12/2814214.html 1.Traits基础 2.优先级:当前类中的方法会覆盖 Tr ...

  9. C++例题2:汉诺塔问题

    #include<iostream>#include<stdlib.h>using namespace std;void Hanoi(int n,char A,char B,c ...

  10. 关于Unity3D中的版本管理 .

    关于Unity3D中的版本管理 使用Unity3D也有一段时间了,由于团队一直使用SVN进行版本管理,现总结一下: (1) Unity3D的二进制资源必须加锁进行版本控制,因为它没办法merge: ( ...