由1 0 组成的数字,就是二进制数字的值!
把当前数字用10表示的最大数字,所代表的二进制的值就是答案。
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<sstream> #include<algorithm> #include<queue> #include<deque> #include<iomanip> #include<vector> #include<cmath> #include<map> #include<stack> #include<set> #include<fstream> #include<memory> #include<list> #include<string> using namespace std; typedef long long LL; typedef unsigned long long ULL; #define MAXN 503 #define N 33 #define MOD 10000007 #define INF 1000000009 const double eps = 1e-9; const double PI = acos(-1.0); string str; int main() { cin >> str; bool f = false; for (int i = 0; i < str.size(); i++) { if (f) str[i] = '1'; else if (str[i] > '1') { str[i] = '1'; f = true; } } LL ans = str[str.size() - 1] - '0', bas = 1; for (int i = str.size() - 2; i >= 0; i--) { bas *= 2; ans = ans + (str[i] - '0')*bas; } cout << ans << endl; return 0; }