题目描述
分析:找出1~N之间的所有数字中1出现的次数,暴力会超时(但是考试时也会得到部分分)
#include<iostream>
#include<algorithm>
using namespace std;
int ans;
int main()
{
int n;
scanf("%d", &n);
int a = 1, left, right;
while (n / a)
{
int now = n / a % 10;
left = n / (a * 10);
right = n%a;
if (now == 0)ans += left*a;
else if (now == 1)ans += left*a + 1 + right;
else if (now > 1)ans += (left + 1)*a;
a *= 10;
cin.get();
}
printf("%d", ans);
return 0;
}