1049. Counting Ones (30) 思路:计算每个‘位’上为1的组合个数,再进行求和
#include <iostream>#include <cmath>#include <cstdlib>#include <string>using namespace std;int main(){ string n; cin>>n; int ans=0; for(int i=0;i!=(int)n.size();++i) { int mid=n[i]-'0'; int left=atoi(n.substr(0,i).c_str()); int right=atoi(n.substr(i+1).c_str()); int ex=n.size()-i-1; if(mid==1)ans+=left*pow(10,ex)+right+1; else if(mid==0)ans+=left*pow(10,ex); else ans+=(left+1)*pow(10,ex); } cout<<ans; return 0;}新闻热点
疑难解答