九州算术数学论坛's Archiver

shumo 发表于 2007-7-9 19:57

一道GOOGLE的面视题

1:编写一个程序,输入一个 n, 输出从1到这个数字之间的出现的1的个数,比如f(13)等于6; f(9)等于1;
2:编写一个程序,得出最先使得 f(n)等于n的整数n;

beyondyf 发表于 2007-8-17 21:06

int f(int n)
{
    int exp = 1;
    int count = 0;
    int a = n;
    while (n > 0)
    {
        int ai = n % 10;
        count += a / (exp * 10) * exp;
        if (ai > 1) count += exp;
        else if (ai == 1) count += a % exp + 1;
        n /= 10;
        exp *= 10;
    }
    return count;
}

beyondyf 发表于 2007-8-17 21:08

第二问没理解,其中的f(n)是指第一题中的f(n)么?
如果是,那么直接return 1; 好了

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2007 Comsenz Inc.