题目地址:https://vjudge.net/contest/175939#overview
A、数据范围是10^9,所以需要一个巧思路。对于一个数n,如何去判定比它的所有数是否是二进制形式。比n小的十进制数极其庞大,但是假设n就是二进制形式,比它小的二进制数有几个?正好,有n(二进制)个。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int main(){ 5 string s; 6 cin>>s; 7 for(int i=0;s[i];i++){ 8 if(s[i]!='0'&&s[i]!='1'){ 9 for(int j=i;s[j];j++){ 10 s[j]='1'; 11 } 12 } 13 } 14 ll ans=0; 15 for(int i=0;i<s.size();i++){ 16 ans+=(s[i]-'0')*(1<<(s.size()-i-1)); 17 } 18 printf("%lld ",ans); 19 }