如皋OJ 1128 洗牌問題

2021-09-08 23:18:56 字數 819 閱讀 9516

1128: 洗牌問題

時間限制: 1 sec  記憶體限制: 128 mb

題目描述

給你2n張牌,編號為1,2,3,……,n,n+1,……,2n。這也是最初的牌的順序。一次洗牌是把序列變為n+1,1,n+2,2,n+3,3……,2n,n。可以證明,對於任意自然數n,都可以在結果m次洗牌後第一次重新得到初始的順序。程式設計對於小於10000的自然數n,求出m的值。 

輸入 輸入資料僅有一行包含乙個正整數n

輸出 輸出資料僅有一行包含乙個整數m

樣例輸入

樣例輸出 6

這道題有個公式:如果乙個數字置為r,如果r<=n,移動後r=r*2,否則r=2*(r-n)-1,有合併公式,可用它會超時,所以我只能用if語句把算式分簡單一些,還有,用來記答案的m要初始化等於0,a陣列中存的是位置,a[i]的數值是i牌所在的位置,這是我的**:

#includeusing namespace std;

int a[20010];

int main()

for(int i=1;i<=n*2;i++)

if(a[i]!=i)

restore=false;

m++;

}cout《以上說道,用綜合算式會超時,有人不信可以提交一下我的綜合算式**:

#includeusing namespace std;

int a[20010];

int main()

cout《這看起來簡單了,可別被表面迷惑,這是時間超限25%的,勸大家不要嘗試。

如皋OJ 1122 雷達2

題目描述 桐桐在去上海的路上,對高速公路的測速雷達發生了興趣,於是開始研究有關知識,發現在設計測速雷達時有這樣乙個計算問題 乙個測速雷達都有乙個最高限速和乙個最低限速。如果探測到的資料超過最高限速或低於最低限速,都認為是駕駛員是違規的。為了檢測探測器是否正常工作,雷達自身要周期性地分析一下最近的資料...