小綠在紙上寫下自己的號碼,例如:12345,她未來愛人的號碼長度與她的長度相同。
第一位數字是介於0到9之間的任乙個, 第二個數字是小綠寫下的號碼的第二位和剛剛寫下的第一位數字和的一半。
假設小綠寫下第一位是9,算術平均值等於(2 + 9)/ 2 = 5.5。她可以根據自己的意願向上或向下取整。
她選擇數字5,將結果數字記下在其數字的第二個數字之後,小綠以相同方式尋找第三個數,即找到她的數字的第三個數字和剛算出來的第二個數字和的一半。
結果是(5 + 3)/ 2 = 4,在這情況下答案是唯一的。
因此,每個第i個數字被確定為小綠數的第i個數字和她的幸運數的第i - 1個數字的算術平均值。
如果需要,可以將數字四捨五入。
例如,小綠可以從12345,算出95444。 但是她撥出**後發現她錯了。可能是因為四捨五入的時候出了錯,或者給出的第乙個數錯了。
請編寫**根據給定的數,算出可能的幸運數字的總數
遞迴
遞迴方法:
/* s: 輸入字串 d: 生成的目的串 v:目的串最後乙個字元的值
x: 標識重複 y: 遞迴串 */
int g(string s, int v, string y, string d, int &x, vector> l)
呼叫方法:
int count_nums(string s)
動態規劃 - 二維陣列
陣列定義:h*10
long count_nums(string s)
}for (i = 0; i <= 9; ++i) s += l[h - 1][i];
return s - t;
}
動態規劃 - 2個一維陣列
long count_nums(string s)
p = l;
}for (; j < 10; j++) s += l[j];
return s - t;
}
python版本-動態規劃
def count_right_numbers(s):
s=[int(i) for i in s[::-1]]
a=s[0]
t=1l=[1]*10
for b in s:
t &= -2p = l*1
a=bfor i in range(10):
l[i]=sum(p[b//2:(b+3)//2])
b+=1
return sum(p)-t
尋找幸運數
4和7是幸運數字,由它們所組成的數也是幸運數字。例如 44,47,474,7447等等。這一系列幸運數由小到大構成了幸運數列。現在,需要設計乙個演算法找出第n個幸運數是多少。我們可以將幸運數列分組 4,7 44,47,74,77 444,447,474,477,744,747,774,777 可以看...
尋找幸運數
今天刷題時,遇到了一道題,我覺得還挺有意思的,自己實現了一下,看了下大佬們的答案,實現如下。首先先來看一下什麼是幸運數 我們一般用的數是十進位制,但是機器只識別二進位制,當乙個整數的十進位制數的每一位,加起來等於它的二進位制的每一位加起來的和。舉個例子吧,123的二進位制表示為1111011,所以二...
京東 幸運數
小明同學學習了不同的進製之後,拿起了一些數字做起了遊戲。小明同學知道,在日常生活中我們最常用的是十進位制數,而在計算機中,二進位制數也很常用。現在對於乙個數字x,小明同學定義出了兩個函式f x 和g x f x 表示把x這個數用十進位制寫出後各個數字上的數字之和。如f 123 1 2 3 6。g x...