這道題有個公式:如果乙個數字置為r,如果r<=n,移動後r=r*2,否則r=2*(r-n)-1,有合併公式,可用它會超時,所以我只能用if語句把算式分簡單一些,還有,用來記答案的m要初始化等於0,a陣列中存的是位置,a[i]的數值是i牌所在的位置,這是我的**: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
#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
題目描述 桐桐在去上海的路上,對高速公路的測速雷達發生了興趣,於是開始研究有關知識,發現在設計測速雷達時有這樣乙個計算問題 乙個測速雷達都有乙個最高限速和乙個最低限速。如果探測到的資料超過最高限速或低於最低限速,都認為是駕駛員是違規的。為了檢測探測器是否正常工作,雷達自身要周期性地分析一下最近的資料...