Hkhv喜欢二进制 NBUT - 1666
Posted hulian425
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hkhv喜欢二进制 NBUT - 1666相关的知识,希望对你有一定的参考价值。
题目链接https://vjudge.net/problem/NBUT-1666
hkhv学长最近对二进制数很感兴趣,喜欢一切0和1组成的数。现在有一个十进制整数n,问你1到n之间有多少个数是只有0和1组成的类似二进制的数,输出他们的个数。
题解:如果某位大于‘1’,就将其后所有的位置为‘’1’‘,然后当作二进制求他多大,他多大说明就有几个比它小的只有‘0’,‘1’组成的整数
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<cmath> using namespace std; int main() { string s; while(cin >> s){ for (int i = 0; i < s.size(); i++) { if (s[i] > ‘1‘) { for (int j = i; j < s.size(); j++) { s[j] = ‘1‘; } break; } } // cout << s << endl; int ans = 0; reverse(s.begin(), s.end()); for (int i = 0; i < s.size(); i++) { if (s[i] == ‘0‘) continue; else ans += (int)pow((double)2, (double)i); } printf("%d ", ans); } return 0; }
以上是关于Hkhv喜欢二进制 NBUT - 1666的主要内容,如果未能解决你的问题,请参考以下文章