POJ 1023 : The Fun Number System - 二进制
来源:互联网 发布:java 自定义属性 编辑:程序博客网 时间:2024/05/17 22:13
题意:给予ppnnp...的字符串及长度k表示的二进制系统,其中k表示共有几位,p表示此位位权为正,n表示此位位权为负。如果最右面一位位p则位权为1即2^0若为n则为-1即-2^0
(1 ≤ k ≤ 64,-2^63 ≤ N < 2^63)
方法:十进制转换成二进制的数学问题的变形,有规律可循,仔细研究会发现其中的递推关系。跟普通的二进制转换差不多,只要在该位为p时,余数为0或1,为n时余数为0或-1即可
思路:从最后一位开始判断,如果N是奇数,那么说明最后一位肯定是1。因为只有最后一位才是0次方,才有可能得到唯一的奇数1。这时如果最后那位是+时,就把N-1再除以2,得到前面的k-1位数;如果最后那位是-时,就把N+1再除以2,得到前面的k-1位数。如果N是偶数,可以断定最后一位是0,那么直接除以2得到前面k-1位得到的数。依次循环至剩下0位即可。如果循环完毕N没有等于0,可以判断为Impossible。
注意:
1.注意负数。2.注意数据范围用long long
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define LL long long
char str[100];
int k,res[100],index=0;
LL N;
int main(){
int T,i;
scanf("%d",&T);
while(T--){
scanf("%d%s%lld",&k,str,&N);
for(i=k-1;i>=0;i--){
if((N%2==1)||(N%2==-1)){
if(str[i]=='p'){
N-=1;
N/=2;
}
else if(str[i]=='n'){
N+=1;
N/=2;
}
res[index++]=1;
}
else{
N/=2;
res[index++]=0;
}
}
if(N!=0) printf("Impossible");
else{
for(i=k-1;i>=0;i--) printf("%d",res[i]);
}
puts("");
index=0;
}
return 0;
}
- POJ 1023 : The Fun Number System - 二进制
- POJ 1023 The Fun Number System
- POJ 1023 The Fun Number System
- POJ 1023 The Fun Number System 笔记
- POJ 1023--The Fun Number System
- 1023 The Fun Number System
- poj 1023 --The Fun Number System(分析题)
- POJ 1023 The Fun Number System (递推)
- poj 1023 The Fun Number System 整数的表示
- The Fun Number System
- POJ1023 The Fun Number System
- POJ_1023 The Fun Number System解题报告
- G - The Fun Number System解题报告(贺奕凯)
- poj1023:The Fun Number System有趣的进制系统
- POJ1023 The Fun Number System【进制相关】
- pku 1023 The Fun Number Syst
- POJ1023_The Fun Number System_模拟二进制运算
- poj The Luckiest number
- [转]线段树
- POJ 2689/ ZOJ 1842: Prime Distance[两次筛法/筛选法平移]
- POJ 2417:Discrete Logging——Baby Step, Giant Step
- Openstack Nova Failed to allocate network(s)
- POJ 3243: Clever Y 求A^X = B (mod C) / BabyStep_GiantStep
- POJ 1023 : The Fun Number System - 二进制
- LeetCode-Search Insert Position
- POJ 1995/ ZOJ 2150 : Raising Modulo Numbers - 快速幂取模
- POJ 1079 : Ratio - 分数逼近
- 优化的选择排序和折半查找法
- CDH5.3集群安装笔记-环境准备(2)
- POJ 2142 : The Balance-解不定方程,一元线性同余
- POJ 1305:Fermat vs. Pythagoras - 勾股定理/毕达哥拉斯三元组
- POJ 1320:Street Numbers——佩尔方程