标签:names href https nbu space lse out cin problem
题目链接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\n", ans); } return 0; }
标签:names href https nbu space lse out cin problem
原文地址:https://www.cnblogs.com/hulian425/p/12237023.html