日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

6760: 九连环(大数)

發布時間:2024/1/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6760: 九连环(大数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

6760: 九連環

http://exam.upc.edu.cn/problem.php?id=6760

時間限制:?1 Sec??內存限制:?128 MB
提交:?582??解決:?92
[提交] [狀態] [討論版] [命題人:admin]

題目描述

九連環是一種源于中國的傳統智力游戲。如圖所示,九個圓環套在一把“劍”上,并且互相牽連。游戲的目標是把九個圓環從“劍”上卸下。

圓環的裝卸需要遵守兩個規則。
第一個(最右邊)環任何時候都可以裝上或卸下。
如果第k個環沒有被卸下,且第k個環右邊的所有環都被卸下,則第k+1個環(第k個環左邊相鄰的環)可以任意裝上或卸下。
與魔方的千變萬化不同,解九連環的最優策略是唯一的。為簡單起見,我們以“四連環”為例,演示這一過程。這里用1表示環在“劍”上,0表示環已經卸下。
初始狀態為1111,每部的操作如下:
1101(根據規則2,卸下第2個環)
1100(根據規則1,卸下第1個環)
0100(根據規則2,卸下第4個環)
0101(根據規則1,裝上第1個環)
0111(根據規則2,裝上第2個環)
0110(根據規則1,卸下第1個環)
0010(根據規則2,卸下第3個環)
0011(根據規則1,裝上第1個環)
0001(根據規則2,卸下第2個環)
0000(根據規則1,卸下第1個環)
由此可見,卸下“四連環”至少需要10步。隨著環數增加,需要的步數也會隨之增多。例如卸下九連環,就至少需要341步。
請你計算,有n個環的情況下,按照規則,全部卸下至少需要多少步。

?

輸入

輸入第一行為一個整數m ,表示測試點數目。
接下來m行,每行一個整數n。

?

輸出

輸出共m行,對應每個測試點的計算結果。

?

樣例輸入

3 3 5 9

?

樣例輸出

5 21 341

?

提示

對于10%的數據,1≤n≤10。
對于30%的數據,1≤n≤30。
對于100%的數據,1≤n≤105,1≤m≤10。

規律:

? ? ? ?奇數 : ?a[i-1]*2+1;

? ? ? ?偶數:a[i-1]*2;

代碼:

import java.util.*; import java.math.*;public class dashu{public static void main(String[] args) {int m,n;Scanner cin=new Scanner(System.in);m=cin.nextInt();while(m>0) {m--;n=cin.nextInt();if(n==1)System.out.println("1");else{BigInteger s;BigInteger a=BigInteger.valueOf(1);BigInteger b=BigInteger.valueOf(2);s=a;for(int i=2;i<=n;i++){if(i%2==0)s=s.multiply(b);else{s=s.multiply(b);s=s.add(a);}}System.out.println(s);}}} }

?

總結

以上是生活随笔為你收集整理的6760: 九连环(大数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。