###### zhbaoq的专栏

Consider a function which, for a given whole number n, returns the number of ones required when writing out all numbers between 0 and n.

For example, f(13)=6. Notice that f(1)=1. What is the next largest n such that f(n)=n?

翻译过来大体是这样：
有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么？

#include <cstdio>
#include <iostream>

using namespace std;

int F(int num)
{
int total = 0;
int one = 1;
int k = 0;
for(;num/one!=0; one=one*10, k++);

int A = 0;
int B = 0;
int C = 0;
int D = 0;
int E = 0;

int two = one/10;

for(; k>0; k--)
{
A = num/one;
B = num%two;
C = num/two;

E = C - D*10;
D = C;

if (E > 1)
{
total += A*two + two;
}
else if (E == 1)
{
total += A*two + B + 1;
}
else if (E == 0)
{
total += A*two;
}

one = one/10;
two = two/10;
}

}

int main()
{
int num;
while(true)
{

cout << "Enter: ";
cin >> num;

cout << "The total is :" << F(num) << endl ;

}

return 0;
}

2008年01月23日 66KB 下载

2006-11-02 16:33:00

#### 一道面试题，我的解法

2013-12-23 20:04:09

2012-10-16 22:30:50

#### 一道网易Java简单集合面试题「我感觉你做不出来」

2017-11-16 15:25:32

#### 一天一道面试题

2018-02-16 22:18:54

#### 一道初等平面几何竞赛题的暴力解法

2017-08-14 11:33:26

2014-03-04 11:33:20

#### 前端程序员经常忽视的一个JavaScript面试题

2016-02-16 13:27:53

#### 每天一道面试题（一）

2013-10-30 10:35:51