LightOJ 1042 Secret Origins(二进制、STL)
来源:互联网 发布:cuda 8.0 linux下载 编辑:程序博客网 时间:2024/05/16 05:36
将一个数字化为二进制,并算出这个二进制数所含‘1’的个数,求出最小的比这个数大的并含相同‘1’个数的数。
先将二进制数转化成 string,再用next_permutation() 即可。不过还有一种情况,就是这个二进制数已经是最后一个排列了,这时候就要给原二进制加上一位数了,具体做法体现在代码中。
#include<iostream>#include<algorithm>#include<string>using namespace std;__int64 cvt(string a){__int64 result = 1;for(int i = 1; i < a.size(); i++){if(a[i] == '0')result = (result << 1);elseresult = (result << 1 | 1);}return result;}int main(){int N, caseNo = 0;cin >> N;while(N--){__int64 T, onoroy = 0;string strT = "";cin >> T;while(T){if(T % 2 == 1){onoroy++;strT.insert(0, "1");}else{strT.insert(0, "0");}T /= 2;}if(!next_permutation(strT.begin(), strT.end())){strT.insert(0, "10");strT.erase(strT.size() - 1, 1);}cout << "Case " << ++ caseNo << ": " << cvt(strT) << endl;}}
- LightOJ 1042 Secret Origins(二进制、STL)
- LightOJ 1042 - Secret Origins
- LightOJ 1042 Secret Origins
- lightoj 1042 - Secret Origins
- lightoj 1042 - Secret Origins 【数学】
- LightOJ 1042 Secret Origins 贪心
- LightOJ - 1042 Secret Origins (模拟)水
- LightOJ 1042 Secret Origins【位运算】
- LightOJ 1042 Secret Origins(贪心)
- LightOJ-1042---Secret Origins (贪心+暴力)
- lightoj 1042 Secret Origins(位运算符号的应用)
- LightOJ 1042 - Secret Origins(数论&进制转换)
- 1042 - Secret Origins
- light oj 1042 Secret Origins
- Secret Origins
- 1042 - Secret Origins (位运算好题)
- LightOJ1042 - Secret Origins (位运算)
- <LightOJ 1338> Hidden Secret!
- TCP端口状态说明ESTABLISHED、TIME_WAIT
- C++获取外部exe程序的返回值
- Windows消息机制
- 【开发工具】分布式编译-IncrediBuild
- 操作码助记符~temp
- LightOJ 1042 Secret Origins(二进制、STL)
- C++位运算设置指定位为0或1
- Linux的十大经典命令
- Thinking Everyday V: 在有微博之前
- JTag, JLink及OpenJtag的比较
- 64-bit Win7下启动OBIEE 10g Catalog Manager
- Ext.MessageBox信息提示框
- SQL过滤掉空格和其他特殊字符函数
- C++读取网络url文件内容