#include <iostream>
using namespace std;
int check(int n)
{
int k = 0;
while(n)
{
int a = n%10;
if(a == 1) k++;
n = n/10;
}
return k;
}
int main()
{
int i = 0,sum = 0;
for(i=1; ; i++)
{
sum+=check(i);
if(sum > 2021) break; //①
}
cout<<i - 1;
return 0;
}
需要注意的细节:(①处的注释)
这里需要注意一个问题,不能是sum == 2021作为条件,而应该是sum > 2021作为条件,最后输出结果的时候,i再减1;这样做的目的是避免下一个数字使用不到1的情况,就假如最后数字是3841,那么下一个数字就是3842,那么即使数字1使用完了,但其他数字还有,则依然可以组成数字。所以这是一个小细节,需要注意一下!!!