zoukankan      html  css  js  c++  java
  • poj1023

    题目大意:有趣的数字系统
    在一个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;
    }
  • 相关阅读:
    014
    013
    012
    011
    009
    009
    008
    适用于可迭代对象的通用函数
    ubuntu中将py3设置为默认的python
    linux系统下安装gtk
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4383923.html
Copyright © 2011-2022 走看看