[교육] 블루 브릿지 컵의 날 1264

1,264

두 행에 그리드 5에서 10까지의 숫자를 입력합니다.
요구 사항 : 왼쪽보다 오른쪽 큰 인접 격자의 수는 아래의 상단보다 크다.
도에 도시 된 바와 같이 두 가지가 충전 방법이 규정되어있다.
가능한 솔루션의 총 수를 계산하십시오.

출력
하시기 바랍니다 출력 정수, 여분의 내용을 인쇄하지 않습니다

주의하십시오

대형 오른쪽

연산

  1. 알고리즘의 편의를 위해 숫자는 왼쪽 위 및 오른쪽 아래에 그 제 0,9 OK -1이다.
  2. i와 i가 비교에 5 + 로우로 간주하는
  3. 어레이 [4]를 처리 할 수없는
  4. 0-3, 비교 위치 난 내가 + 1, 그리고 난 크기 + 5
  5. 5-8, 비교 위치 난 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)

1,276

[블루 브릿지 컵 2015 결승전] 로봇 사육

X 은하 로봇은 자동으로 복제 할 수 있습니다. 그들은 일년의 시간이이 스스로를 복제 한 다음 복제 할 수있는 능력을 잃을 수 있습니다 사용합니다.
X 은하 년 우주로 보내 새로 태어난 로봇을 선출합니다. X 5 갤럭시 원래 로봇, 경우 즉,
일년 후 총입니다 : 5 + 9 = 14
이년의 번호는 : 5 + 9 + 17 = 31
로봇의 총 수는 이후의 N 년 동안 발견 된 경우 어떻게 많은 로봇 계산할 처음에 수?
입력
테스트 데이터 입력 세트의 복수의
상기 의미로 공백으로 구분 테스트 데이터 입력 라인과 두 개의 번호 N (S)의 각각의 세트에 대한. N (S)는 50 비트없고, 100보다 크다.
출력
각 시험 필요한 출력 선과, 제 로봇의 수를 나타내는 정수.
입력 샘플 복사
2 (31)는
97 2218388550399401452619230609499
샘플 출력은 복사
. 5
. 8

주의하십시오

INT 오버플로 저장 될 때,지도 () 길이에 사용될 수 없다 (S) (50)의 최대 값을 갖는, 그러나 python2.2 후에, 자동으로 긴 타입의 값으로 변환되고

연산

잊으 년 N + X 및 보충하기 위해 기억

확장 : 만약 N 알려져 있으며, S (N, x는 초기 수 년이다), 로봇 N의 후 년의 총 수를 찾을 수

  1. 잘의 계산 재귀

문제 해결

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