我的有道第二題(不是雙倍超立方)

2022-01-16 00:56:36 字數 2029 閱讀 8699

先說明一下,我遇到的第二題跟大家先前討論的第二題題目不同,不過最近演算法挺火,也就放上來,大家一起討論討論,而且我覺得有道這次比賽非常好,我看了下topcode平台,大家平時也可以進這個平台練習一下演算法,不過。。。。有道的翻譯還真有待提高了

宣告一下,我演算法沒有學過,只是想到了解決的方法,當時理解題目花了我很多時間,不知道是我太笨還是題目真有問題,呵呵。廢話不說,上題目:

problem statement

乙個二進位制序列由下面的偽**生成:

string a = "0"

while (a

的長度小於等於

n) 建立乙個和

a一樣長度的字串

b for i=0,1,...length(a)-1

if (i

是完全平方數

) b[i] = 1-a[i]

else

b[i] = a[i]

令a = a + b (即將b

拼接在a

後面)

end while

return a

請注意,在上面的偽**中,

a[i]

和b[i]

分別表示字串a和

b中下標為

i的字元(下標編號從

0開始)。對

"完全平方數

"的定義是,對於整數

i,存在整數

j,使得

i= j *j

,則稱i

為完全平方數。

下面具體說明序列生成的過程:如果

n=7,則在每一輪迭代中,

a的取值依次為:

0, 01, 0110, 01101010

,所以最終產生的二進位制序列就是

0,1,1,0,1,0,1,0

請返回上述序列中下標為

n的數字(該序列的下標從

0開始)

definition

class:

binarysequence

method:

getvalue

parameters:

int

returns:

int

method signature:

int getvalue(int n)

(be sure your method is public)

constraints

- n

的取值大於等於

0,小於等於

2,000,000,000

examples

0) 7

returns: 0

原因參見題目描述。

1) 2

returns: 1

2) 8

returns: 1

這一次,生成的序列為

0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0.

3) 11

returns: 0

4) 10

returns: 1 

5)15

returns: 0

1public

class

binarysequence219

else

2023}24

a =a +

string.join(

"", b);

2526}27

28return

int.parse(a[n].tostring());

29}30

31public

bool

issquare(

intn)

3241}42

43return

result;

44}45

}單純為了解決方法做的,效率談不上,效能也不好,不過剛想到乙個有趣的解法,準備下午的時候抽空寫寫,哈哈

寫演算法純粹是為了玩,不是要證明自己如何,大家也不必說演算法到底有用無用,有用無用都是根據自己的工作來看的,不過業餘時間玩玩演算法,真的很好。

我的有道難題演算法 雙倍超立方數

constraints n取值範圍為1到1,000,000,000 含 examples 0 1returns 0 1 1729 returns 1 1729 1 3 12 3 1729 9 3 10 3 2 475574 returns 27 因為題中大量使用3次方計算,這裡我們也可以減少重複計算...

網易有道的上機第二道題目

原題貌似是這樣的,1 9這個數,每個數用兩遍,組成3個六位數,當這3個六位數同時是完全平方數時,輸出這3個六位數 六位數無關順序 a b,c a,c,b 解析 先找出是完全平方的六位數,先找到滿足要求的三位數 平方下就六位數了 即在這個區間找合適的組合 317,999 原因是316 316 9985...

我在力扣作的第二道題

給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。輸出 7,0,8 解釋 342 465 807.示例 2 輸入 l1 ...