# re: Google面試題之補充 回復 更多評論
2006-09-17 12:57 by
sorry,我有個筆誤
(count_i-i)/9
=>
(count_i-i)/8
至多含有9個1,count每次最多減9,而i-=1,所以差距至多-8,
這樣會更快一點
# re: Google面試題之補充 回復 更多評論
2006-09-17 13:19 by
說實話,第一次我和你說的算法是指的
fastrun()
不過后來你叫我把算法給你看看,我覺得這種奇技淫巧不好意思拿出手
只好想了一個算法
不過,我還是覺得fastrun比run更有價值,我想這也是Google面試的本意吧:)
# re: Google面試題之補充 回復 更多評論
2006-09-17 13:25 by
后來我也覺得那個不正經。
我認為還是正經解決一下比較好。做到這個份上,也差不多了。
# re: Google面試題之補充 回復 更多評論
2007-08-16 14:17 by
Show一下我的程序:
int count_ones(int n)
{
static int pow10[]={1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};
int ones=0;
for(int m=n, b=0; m; m/=10, b++)
{
int d=m%10;
ones+=d*pow10[b]*b/10;
if(d>1) ones+=pow10[b];
if(d==1) ones+=n%pow10[b];
}
return ones;
}