PAT 1049

题目 : Counting Ones

分值 : 30
难度 : 中等题吧
思路 : 按照个位数的一,十位数的一,百分数的一等等分类
坑点 : 归纳题
评语 : 30分的题18行,刺不刺激

具体代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std ;
int main() {
int N ;
cin >> N ;
int chushu = 1 ;
int count =0 ;
while(N / chushu)
{
count += N/(chushu*10) * chushu ;
if(N %(chushu*10) >= chushu && N%(chushu*10) < 2*chushu )
count += N%(chushu*10) - chushu +1 ;
else if( N %(chushu*10) >= 2*chushu )
count += chushu ;
chushu *=10 ;
}
cout << count <<endl ;
}