google的一道面试题!(附我的解法)

原创 2006年05月23日 19:10:00

  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是什么?

我是用C写的,原题要求用java,其实无所谓了,欢迎大家指点:

#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;
 }

 return total;

}

int main()
{
   int num;
   while(true)
   {
 
   cout << "Enter: ";
   cin >> num;

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

  } 

   return 0;
}

 

 

相关文章推荐

【白话经典算法系列之十一】一道有趣的GOOGLE面试题 --【解法2】

微博http://weibo.com/MoreWindows已开通,欢迎关注。本系列文章地址:http://blog.csdn.net/MoreWindows/article/category/859...

【算法】一道有趣的GOOGLE面试题 --【解法2】

int Repeat(int *a, int n) { for(int i = 0; i < n; i++) { if(a[i] > 0) //判断条件 { if(a[ a[i] ]...

【动态规划】 Google面试题 爬楼梯问题 斐波那契问题的多种解法

Google 曾询问应征者 :有N阶楼梯 ,你每次只能爬1或2 阶 楼梯;能有多少种方法 对这个问题进行分析:  假设N阶楼梯的爬法有A(N)种;由于每次爬1或2阶 因此 A(N)= A(N-1)...

一道面试题:三次称量判断十二个球中一个劣质球的解法

有十二个球,大小形状相同,其中有一个是劣质球,或轻或重无法用感觉判断,现有一无刻度的天平,请用三次称量确定那个劣质球。这个问题应该这样解决了吧。从昨晚到现在一直在想这个问题,现在终于想明白了,应该不会...

一道有趣的GOOGLE面试题——找出至少一个重复元素

一道有趣的GOOGLE面试题——找出至少一个重复元素 题目: 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时...

白话经典算法系列之十 一道有趣的GOOGLE面试题 .

最近在微博上看到一道有趣的GOOGLE面试题,见下图: 文字版: 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n...

一道有趣的GOOGLE面试题 .

文字版: 一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间。       这个题目要求用O(n)的时间复杂度,这意...

一道据说是Google的面试题:25匹马的角逐

一道据说是Google的面试题:25匹马的角逐

一道Google面试题引发的代码优化战

【前情提要】 在第一篇技术博里,以”交换两个给定变量的值”为例,Coder谈到了代码的优化问题。今天我们以一道Google面试题为例,继续谈优化。这道题做得好,今夜我们都是Google-ese.【T...

一道 Google 竞赛题的解法

  • 2008年01月23日 23:42
  • 66KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:google的一道面试题!(附我的解法)
举报原因:
原因补充:

(最多只允许输入30个字)