亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 46112 | 回復(fù): 117
打印 上一主題 下一主題

據(jù)說是google的面試題,看誰的快 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-03-29 11:29 |只看該作者 |倒序瀏覽
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?  

翻譯過來大體是這樣:
有一個整數(shù)n,寫一個函數(shù)f(n),返回0到n之間出現(xiàn)的"1"的個數(shù)。比如f(13)=6,現(xiàn)在f(1)=1,問此后最大的f(n)=n的n是什么?

f(13)=6是 因為1,2,3,4,5,6,7,8,9,10,11,12,13.中'1'的個數(shù),正好是6.

我寫了一個,用了不到一秒的時間
結(jié)果如下:
1
199981
199982
199983
199984
199985
199986
199987
199988
199989
199990
200000
200001
1599981
1599982
1599983
1599984
1599985
1599986
1599987
1599988
1599989
1599990
2600000
2600001
13199998
35000000
35000001
35199981
35199982
35199983
35199984
35199985
35199986
35199987
35199988
35199989
35199990
35200000
35200001
117463825
500000000
500000001
500199981
500199982
500199983
500199984
500199985
500199986
500199987
500199988
500199989
500199990
500200000
500200001
501599981
501599982
501599983
501599984
501599985
501599986
501599987
501599988
501599989
501599990
502600000
502600001
513199998
535000000
535000001
535199981
535199982
535199983
535199984
535199985
535199986
535199987
535199988
535199989
535199990
535200000
535200001
1111111110

[ 本帖最后由 yzc2002 于 2006-3-29 17:09 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2006-03-29 11:51 |只看該作者
關(guān)注ing...大哥把代碼拿出來showshow吧

論壇徽章:
0
3 [報告]
發(fā)表于 2006-03-29 11:57 |只看該作者
俺地DD就是強,思考中...

論壇徽章:
0
4 [報告]
發(fā)表于 2006-03-29 12:14 |只看該作者
寫了個偽的
大伙指正

  1. //計算一個整數(shù)里還有多少個1,有幾個返回幾
  2. int num_a_int(int papapa)
  3. {
  4.         //這個函數(shù)對誰來說都easy吧
  5.         return 0;
  6. }

  7. //這個函數(shù)就是題目里要求的那個函數(shù)f了,利用num_a_int做遞歸
  8. int f(int zzz)
  9. {
  10.         int ret = 0;

  11.         if (zzz < 0)
  12.                 return 0;

  13.         ret += f(zzz - 1);

  14.         return ret + num_a_int(zzz);
  15. }
復(fù)制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2006-03-29 12:22 |只看該作者
原帖由 converse 于 2006-3-29 11:51 發(fā)表
關(guān)注ing...大哥把代碼拿出來showshow吧

代碼倒是很簡單的,但解釋起來很費勁,不解釋又不可能看得懂
還是先想想吧~~

[ 本帖最后由 yzc2002 于 2006-3-29 12:40 編輯 ]

論壇徽章:
0
6 [報告]
發(fā)表于 2006-03-29 12:33 |只看該作者
厲害,速度好快啊.

論壇徽章:
0
7 [報告]
發(fā)表于 2006-03-29 14:16 |只看該作者

好像不對吧

樓主可以貼下代碼嗎? 好像不對啊

有一個整數(shù)n,寫一個函數(shù)f(n),返回0到n之間出現(xiàn)的"1"的個數(shù)。比如f(13)=6,現(xiàn)在f(1)=1,問下一個最大的f(n)=n的n是什么?


返回 f(a)=b 且當(dāng) a==b的時, a=?是嗎?

設(shè)n的位數(shù)為m  0~n之間1的個數(shù)為u
m和u的關(guān)系是  10^(n-1)*(9)^0+.....10^(n-n)*(9)^(n-1)
當(dāng)m是1時(是1位數(shù)) u=1 = 10^0*9^0
當(dāng)m是2時(兩位數(shù))u=19 = 10^1 + 10^0*9^0
當(dāng)m是3時     u=271 = 10^2+10^1*9^1+10^0*9^2
.....
當(dāng)m〉10 (大于10位)時 u會趕上n


所以樓主的199981有問題啊

論壇徽章:
0
8 [報告]
發(fā)表于 2006-03-29 14:27 |只看該作者
原帖由 liubaochen 于 2006-3-29 14:16 發(fā)表
樓主可以貼下代碼嗎? 好像不對啊



返回 f(a)=b 且當(dāng) a==b的時, a=?是嗎?

設(shè)n的位數(shù)為m  0~n之間1的個數(shù)為u
m和u的關(guān)系是  10^(n-1)*(9)^0+.....10^(n-n)*(9)^(n-1)
當(dāng)m是1時(是1位數(shù)) u=1 = 10 ...



你 搞錯了吧?
f(19)=12
f(271)=158
有規(guī)律倒是真的,其實這個題目考的是一個算法,而不是編程技巧。

論壇徽章:
0
9 [報告]
發(fā)表于 2006-03-29 14:28 |只看該作者
樓主的答案沒有問題的,我用最土的方法,結(jié)果跟樓主是一樣的,就是速度太慢了.

論壇徽章:
0
10 [報告]
發(fā)表于 2006-03-29 14:29 |只看該作者
原帖由 liubaochen 于 2006-3-29 14:16 發(fā)表
設(shè)n的位數(shù)為m  0~n之間1的個數(shù)為u
m和u的關(guān)系是  10^(n-1)*(9)^0+.....10^(n-n)*(9)^(n-1)

這個關(guān)系你是怎么得出來的?應(yīng)該是不對的.
10^(n-1)*(9)^0+.....10^(n-n)*(9)^(n-1)=10^(n-1)(1+9/10+...+(9/10)^(n-1))=10^n-9^n
如f(99)=20而不是19
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP