zoukankan      html  css  js  c++  java
  • POJ1023 The Fun Number System

    题目来源:http://poj.org/problem?id=1023

    题目大意:

      有一种有趣的数字系统。类似于我们熟知的二进制,区别是每一位的权重有正有负。(低位至高位编号0->k,第i位的权值为2^i 或-2^i)

    输入:第一行给定测试用例数。每个用例的第一行为一个正整数k(1<=k<=64),说明该二进制编码的位数长度。接下来一行是一个长度为k的字符串,仅有两种字母p和n,描述了该种编码格式中每一位的权重为正(p)还是为负(n).第三行为一个正整数,N(-2^23<=N<=2^23)。

    输出:对于N若能够用前述的编码方式编码,则输出其编码结果,若不能输出Impossible。


    Sample Input

    2
    3
    pnp
    6
    4
    ppnn
    10

    Sample Output

    Impossible
    1110

    按10进制转化为2进制的方法计算每位为0还是为1,若求完最后一位后,剩下的数字为0,则说明可以按该规则编码成功,否则不能。

     1 //////////////////////////////////////////////////////////////////////////
     2 //        POJ1023 The Fun Number System
     3 //        Memory: 304K        Time: 0MS
     4 //        Language: C++        Result: Accepted
     5 //////////////////////////////////////////////////////////////////////////
     6 
     7 #include <iostream>
     8 #include <cmath>
     9 
    10 using namespace std;
    11 
    12 int main() {
    13     int ncase;
    14     cin >> ncase;
    15     for (int caseNo = 1; caseNo <= ncase; ++caseNo) {
    16         int k;
    17         cin >> k;
    18         char s[64];
    19         int v[64];
    20         for (int i = 0; i < k; ++i) {
    21             cin >> s[i];
    22         }
    23         long long n;
    24         cin >> n;
    25         for (int t = 0; t < k; ++t) {
    26             long long base = (long long)pow(2.0, t+1.0);
    27             if (n % base == 0) {
    28                 v[t] = 0;
    29             } else {
    30                 v[t] = 1;
    31                 n -= (s[k - 1 - t] == 'p' ? ((long long)pow(2.0, t+0.0)) : -1 * ((long long)pow(2.0, t+0.0)));
    32             }
    33         }
    34         if (n == 0) {
    35             for (int t = k - 1; t >= 0; --t) {
    36                 cout << v[t];
    37             }
    38             cout << endl;
    39         } else {
    40             cout << "Impossible" << endl;
    41         }
    42 
    43     }
    44     system("pause");
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    clientHeight获取屏幕可视化高度
    vue-particles粒子动画插件的使用和爬坑出现垂直滚动条
    合并数组 扩展运算符
    深拷贝和类型检测
    05showLoading配置和 <text>标签的坑 如何发送请求 分享功能和懒加载
    HDU1875 畅通工程再续
    洛谷P1991 无线通讯网(最小生成树性质+连通块)
    Codeforces Round #621 (Div. 1 + Div. 2) C. Cow and Message
    洛谷P2330 [SCOI2005]繁忙的都市
    HDU2612 Find a way (跑两遍BFS)
  • 原文地址:https://www.cnblogs.com/dengeven/p/3228475.html
Copyright © 2011-2022 走看看