#include<bits/stdc++.h>usingnamespace std;intto_int(string s,int beg,int end){int ans =0;for(int i = beg; i < end;++i){
ans = ans *10+ s[i]-'0';}return ans;}intmain(){#ifdef LOCALfreopen("input.txt","r",stdin);#endif// aaaxbbb,对于x的位取到1,分为三类讨论// x == 1 时,有aaa*1000+bbb+1种情况// x > 1 时,有(aaa+1)*1000种情况// x == 0 时,有aaa*1000种情况
string num;
cin >> num;int ans =0;for(int i =0; i < num.size();++i){int weishu = num.size()- i;// 有些编译器pow出来会差0.00...1, 所以要round一下if(num[i]-'0'>1)
ans +=((to_int(num,0, i)+1)*round(pow(10, weishu -1)));elseif(num[i]-'0'==1)
ans +=((to_int(num,0, i)*round(pow(10, weishu -1))+to_int(num, i +1, num.size()))+1);elseif(num[i]-'0'==0)
ans +=((to_int(num,0, i))*round(pow(10, weishu -1)));}
cout << ans;}
PAT 甲级 1049 Counting Ones#include <bits/stdc++.h>using namespace std;int to_int(string s, int beg, int end){ int ans = 0; for (int i = beg; i < end; ++i) { ans = ans * 10 + s[i] - '0'; } return ans;}int main(){#ifde