[トレーニング]ブルーブリッジカップデー1264

1264

二列のグリッド5で10に番号1を入力します。
要件:左より右の大きなに隣接する格子の数は、以下の上面よりも大きいです。
二種類の充填方法は、図1に示すように修飾されています。
可能な解決策の合計数を計算してください。

出力
してください出力整数、余分なコンテンツを印刷しないでください

ご注意ください

大右下

アルゴリズム

  1. アルゴリズムの便宜上、番号が左上と右下の隅にある最初0,9 OK、-1です。
  2. 行とみなしために、IとIは、比較に5 +
  3. 配列[4]扱うことができません
  4. 0-3、比較位置I、I + 1、及びI、I + 5サイズ
  5. 5-8、比較位置I、I + 1つのサイズ

問題の解決策

回答:42

from itertools import permutations
def f(data):
    for i in range(9):
        if i == 4:
            continue
        if not i//5:
            if data[i] < data[i+5] and data[i] < data[i+1]:
                continue
            else:
                break
        else:
            if data[i] < data[i+1]:
                continue
            else:
                break
    if i == 8:
        return True

array = [i for i in range(10)]
res = 0
for i in permutations(array[1:-1]):
    array[1:-1] = i
    if f(array):
        res += 1
print(res)

1276

[ブルーブリッジカップ2015の決勝]ロボット繁殖

X銀河ロボットが自動的に複製することができます。彼らは今年の時間は2自体を複製して、複製する能力を失うことができます。
X銀河今年はスペースに送られた生まれたばかりのロボットを選出します。X 5ギャラクシーオリジナルロボットは、場合すなわち、
1年後の合計である:5 + 9 = 14
2年の数である:5 + 9 + 17 = 31
ロボットの総数は後でS N年間を通じて検出された場合、あなたどのように行う多くのロボットを計算するために最初にできますか?
入力
テストデータ入力、複数組の
テストデータ入力ラインと二つの数N S個の各セットのためには、上記のように意味、スペースで区切ら。N S個以上の50ビットではないが、100以下です。
出力
各試験について、必要な出力ライン、第一ロボットの数を表す整数。
サンプル入力コピー
2 31は、
97 2218388550399401452619230609499
サンプル出力コピー
。5
。8

ご注意ください

整数オーバーフローを保存した場合、地図()長いでは使用できませんS 50の最大値を有し、ただしのpython2.2後、それは自動的にlong型値に変換します

アルゴリズム

今年のn + Xを忘れた、と作ることを忘れないでください

拡張子:もしnは知られている、S(nは、xは最初の数年です)、ロボットのn秒後の年間の合計数を見つけます

  1. うまくsから算出した再帰

問題の解決策

def f(n,s):
    up = s + 2**(n+1)-2-n
    return up//(2**(n+1)-1)
while True:  
    n, s = map(int,input().split())
    print(f(n,s))

拡張ソリューション:

def f(n,x):
    if n == 0:
        return x
    return f(n-1,2*x-1)+x
while True:  
    n, s = map(int,input().split())
    print(f(n,x))

おすすめ

転載: www.cnblogs.com/yanshanbei/p/12216056.html