来源:点击打开链接
可以模拟过,不过练习这个题的目的是学习stl中的bitset,一个神奇的二进制容器.
和vector/MAP等容器一样,bitset具备stl库函数的几乎所有特性,同时加入了一些自己的东西,对二进制处理十分便利,尤其是在找零和找一的方面.
ps:遍历的话,bitset默认是从后往前遍历的.所以不要自己再倒过来了.
一些库函数及用法的实例:
典型的bitset初始化示例
bitset对象常用操作
#include <iostream> #include <cstring> #include <cmath> #include <string> #include <cstdlib> #include <bitset> using namespace std; int main() { int testcase; int counter=1; while(cin>>testcase) { if(testcase==0) break; cout<<"Answer to case"<<counter++<<":"<<endl; for(int i=1; i<=testcase; i++) { int tar; int lastdigit; int conv; cin>>tar; bitset<32> pack(tar); //cout<<pack<<endl; for(int i=0; i<pack.size(); i++) { if(pack[i]==1) { pack[i]=0; break; } } //cout<<pack<<endl; int res=pack.to_ulong(); cout<<tar-pack.to_ulong()<<endl; } cout<<endl; } return 0; }
[bitset用法]SDUT 2841 Bit Problem,布布扣,bubuko.com
[bitset用法]SDUT 2841 Bit Problem
原文:http://blog.csdn.net/mig_davidli/article/details/25004651