POJ1023 The Fun Number System【进制相关】
2015-09-17 22:55
239 查看
题目链接:
http://poj.org/problem?id=1023
题目大意:
给一个长度为 k 的字符串 s,每一位有两种状态,'p'表示该位上的权值为+2^i,'n'表
示-2^i。再给你一个整数 N。求一个 k 位的二进制数,能够通过与字符串 s 对应位置
上的相应变换,最终等于整数
N。
例如:N 为10,字符串 s 为"ppnn"。则所求二进制数为 1110。
变换为 1*2^3 + 1*2^2 - 1*2^1 - 0*2^0 == 10。
解题思路:
已知 N 的二进制为 k 位。从 N 的低位向高位考虑。
若 N 为偶数,则最低位必为 0,无论 s 对应位置是'n'还是'p',对 N 二进制的 k-1 位
没有影响,则 N >>= 1,继续计算
k-1 位。
若 N 为奇数,则最低位必为 1,若 s 对应位置是'n',表示该位 -1,本来应该为+1,
则高位要+1,右移
N >>= 1 之后+1,或者+1之后右移。若 s 对应位置是'p',则该位
本来就是+1,直接右移 N >>= 1 即可。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
char s[70];
int main()
{
__int64 N;
int T,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%s%I64d",&k,s,&N);
while(k--)
{
if(N & 1)
{
if(s[k] == 'n')
N++;
s[k] = '1';
N >>= 1;
}
else
{
s[k] = '0';
N >>= 1;
}
}
if(N)
printf("Impossible\n");
else
printf("%s\n",s);
}
return 0;
}
http://poj.org/problem?id=1023
题目大意:
给一个长度为 k 的字符串 s,每一位有两种状态,'p'表示该位上的权值为+2^i,'n'表
示-2^i。再给你一个整数 N。求一个 k 位的二进制数,能够通过与字符串 s 对应位置
上的相应变换,最终等于整数
N。
例如:N 为10,字符串 s 为"ppnn"。则所求二进制数为 1110。
变换为 1*2^3 + 1*2^2 - 1*2^1 - 0*2^0 == 10。
解题思路:
已知 N 的二进制为 k 位。从 N 的低位向高位考虑。
若 N 为偶数,则最低位必为 0,无论 s 对应位置是'n'还是'p',对 N 二进制的 k-1 位
没有影响,则 N >>= 1,继续计算
k-1 位。
若 N 为奇数,则最低位必为 1,若 s 对应位置是'n',表示该位 -1,本来应该为+1,
则高位要+1,右移
N >>= 1 之后+1,或者+1之后右移。若 s 对应位置是'p',则该位
本来就是+1,直接右移 N >>= 1 即可。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
char s[70];
int main()
{
__int64 N;
int T,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%s%I64d",&k,s,&N);
while(k--)
{
if(N & 1)
{
if(s[k] == 'n')
N++;
s[k] = '1';
N >>= 1;
}
else
{
s[k] = '0';
N >>= 1;
}
}
if(N)
printf("Impossible\n");
else
printf("%s\n",s);
}
return 0;
}
相关文章推荐
- LeetCode Maximal Rectangle
- LeetCode Maximal Rectangle
- OLED颠覆显示行业 未来电视发展明朗化
- Android 自定义View——自定义点击事件
- Qt Quick 图像处理实例之美图秀秀(附源码下载)
- mongodb的安装与启动(centos7)
- AJAX--显示加载中并弹出图层遮挡页面
- log4j学习(一)最简单的例子
- android:music
- SQL Server中扫描(scan)和查找(seek)这两种算法的区别
- 韩顺平 java 第五讲第六讲第七讲 类与对象 成员方法 构造方法
- 图像处理资源
- 冒泡排序
- Java:static静态方法
- ebs中安全性
- 0917Android基础自定义View的点击事件
- 启动界面显示图片
- EF学习和使用(五)Lazy Loading and Eager Loading
- Frameset使用教程
- 新站4个月,新手做网站经验总结