演算法 藍橋杯 演算法提高 簡單加法

2021-09-29 21:23:37 字數 2279 閱讀 5283

這道題有兩種思路:

1.暴力迴圈;

2.逆推。

怎麼說呢:

在演算法題中,小資料最好用的方法就是暴力破解方法,雖然有時間、記憶體的限制,但是因為資料量小,所以還是夠用的。

所以對於這道題,寫乙個for迴圈,從1迴圈到1000,用取餘判斷即可。

**如下:

public

class

main

num++;}

system.out.

println

("loop time:\t"

+ num)

; system.out.

println

("result:\t"

+ sum)

; system.out.

println

("end time:\t"

+ system.

currenttimemillis()

);}}

【換個思路】

假設乙個數x能夠除盡3,那麼也就是說,一定存在乙個整數m*3=x

因為存在這個關係,所以對於暴力的思路就可以轉換為逆推了。

**如下:

public

class

main

x =0;

while

(x *

5< alltime)

y += x *5;

x++; n++;}

system.out.

println

("loop time:\t"

+ n)

; system.out.

println

("result:\t"

+ y)

; system.out.

println

("end time:\t"

+ system.

currenttimemillis()

);}}

為了更好的對比這兩種演算法的效能,我們不斷的增加總數的數量級,看看差距:

1000以內:alltime=1000

start time:	1574493454522

loop time: 999

result: 233168

end time: 1574493454523

start time: 1574493454523

loop time: 533

result: 233168

end time: 1574493454523

可以看到迴圈次數暴力是逆推的一倍

10000以內:alltime=10000

start time:	1574493530032

loop time: 9999

result: 23331668

end time: 1574493530032

start time: 1574493530032

loop time: 5333

result: 23331668

end time: 1574493530032

玩把大的10億

10 0000 0000以內:alltime=10 0000 0000

start time:	1574493591597

loop time: 999999999

result: 631780268

end time: 1574493593545

start time: 1574493593545

loop time: 5 3333 3333

result: 631780268

end time: 1574493594090

暴力迴圈10億次

1574493593545-1574493591597 = 1948毫秒

逆推迴圈5億次

1574493594090-1574493593545 = 545毫秒

所以,對於這道題,如果是求10億內的,用暴力迴圈就無法滿足時間要求了。

用逆推滿足時間要求。(應該與jvm對迴圈有優化,否則我們的理論時間應該是1948毫秒的一半,不是現在的1/4)

藍橋杯 演算法提高VIP 大數加法高精度

時間限制 1sec 記憶體限制 128mb 題目描述 輸入兩個正整數a,b,輸出a b的值。輸入 兩行,第一行a,第二行b。a和b的長度均小於1000位。輸出 一行,a b的值。樣例輸入42 樣例輸出 6分析 很顯然,整型型別已不滿足條件,需要用字元陣列來解決,將兩個數儲存在字元陣列中,然後逆序儲存...

藍橋杯 演算法提高 change

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 陣列a中共有n個元素,初始全為0。你可以對陣列進行兩種操作 1 將陣列中的乙個元素加1 2 將陣列中所有元素乘2。求將陣列a從初始狀態變為目標狀態b所需要的最少運算元。輸入格式 第一行乙個正整數n表示陣列中元素的個數 第二行n個正整...

彩票 (藍橋杯 演算法提高 )

為豐富男生節活動,貴系女生設定彩票 環節,規則如下 1 每張彩票上印有7個各不相同的號碼,且這些號碼的取值範圍為 1,33 2 每次在兌獎前都會公布乙個由七個互不相同的號碼構成的中獎號碼 3 共設定7個獎項,特等獎和一等獎至六等獎。兌獎規則如下 特等獎 要求彩票上的7個號碼都出現在中獎號碼中 一等獎...