以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。
数据范围:
# import sys # sys.setrecursionlimit(100000) #这里设置为十万 # def func(n): # if n == 1: # return [1] # elif n == 2: # return [1,1,1] # else: # tmp = [0] + func(n-1) + [0] # res = [] # for i in range(n-1): # res.append(sum(tmp[i:i+3])) # return [1] + res + res[:-1][::-1] + [1] # li = func(int(input())) # res = 0 # tag = -1 # for x in range(len(li)): # if li[x] % 2 == 0: # tag = 0 # res = x + 1 # break # print(tag + res) # 1 3 6 7 : J J O J 此时n=3 # 1 4 10 14 : J O O O # 下一行: J J J O # 下一行: J O J O # 下一行: J J O J 后续循环。。。 n = int(input()) def func(n): # 这里n等于行数-1 if n in [0, 1]: return -1 elif n%2 == 0: return 2 else: return ((n-3)//2)%2 + 3 print(func(n-1))
n=int(input()) # n=3 li=[[1]] for i in range(1,n): tmp=[0]+li[-1]+[0] letmp=li[-1]+[0,0] ritmp=[0,0]+li[-1] ro=[tmp[j]+letmp[j]+ritmp[j] for j in range(len(tmp))] li.append(ro) # print(li[-1]) flag=-1 for i,v in enumerate(li[-1]): if v%2==0: flag=i+1 break print(flag) # print(li)
n=int(input()) # n=3 li=[1] for i in range(1,n): tmp=[0]+li+[0] letmp=li+[0,0] ritmp=[0,0]+li li=[tmp[j]+letmp[j]+ritmp[j] for j in range(len(tmp))] # li.append(ro) # li=li[-2:] # print(li[-1]) flag=-1 for i,v in enumerate(li): if v%2==0: flag=i+1 break print(flag) # print(li)
def genLi(): li = [1] yield li pa = [0, 0] while True: li = pa + li + pa liNew = [li[i] + li[i+1] + li[i+2] for i in range(len(li) - 2)] li = liNew yield li gen = genLi() # n = 500 n=int(input()) for _ in range(n): resLi = next(gen) flag=-1 for i,v in enumerate(resLi): if v%2==0: flag=i+1 break print(flag)
a = int(input()) print(-1 if a <= 3 else (2 if (a - 3) % 4 in (0, 2) else (3 if (a - 3) % 4 == 1 else 4)))
num = int(input()) # 找规律:可以发现偶数出现在每一行的第几位为 2 4 2 3 # 这就成了周期问题 result = [2, 4, 2, 3] if num >= 3: print(result[num % 4 - 1]) else: print(-1)
import sys def triangle(row): n = row if n <= 2: print(-1) else: if n%2 != 0: #odd print(2) elif n%2 == 0 and n%4 == 0: print(3) else: print(4) return triangle(int(input()))
N = int(input()) if N <= 2: print(-1) else: if N % 2 == 0 and N % 4 == 0: print(3) elif N % 2 == 1: print(2) else: print(4)
# 看题目找规律: # 第 5 行: [1, 4, 10, 16, ...] 第 2 个 # 第 6 行: [1, 5, 15, 30, ...] 第 4 个 # 第 7 行: [1, 6, 21, ...] 第 2 个 # 第 8 行: [1, 7, 28, ...] 第 3 个 # 第 9 行: [1, 8, ...] 第 2 个 # ... # 于是不同行的偶数出现的位置为: # [-1, -1, 2, 3, 2, 4, 2, ...] # 我们大胆猜想, 从第 2 个开始: # 2, 3, 2, 4, 2, 3, 2, 4, .... # 这样的顺序出现, 即: # 1. 1 + 2 * n => 2; # 2. 4 * n => 3; # 3. 2 + 4 * n => 4; # 这样的猜想是有道理的. 首先题目所给的数据范围是 [1, 10^9] # 即便是使用 O(n) 的时间复杂度, 也肯定会超时, # 而看起来这题目又没有二分的方法去做, 所以肯定是找规律. # 代码如下: def solution(x: int) -> int: if x < 3: return -1 if x % 2 == 1: return 2 if x % 4 == 0: return 3 if x % 4 == 2: return 4 if __name__ == "__main__": n = int(input().strip()) print(solution(n))
def yung(n: int): if n == 1: return [[1]] else: y = [[0] * (2 * n - 1)] * n y[0][n-1]=1 for i in range(1,n): y[i][n - i - 1], y[i][i - n] = 1, 1 for j in range(n - i, n + i - 1): y[i][j] = y[i - 1][j - 1] + y[i - 1][j] + y[i - 1][j + 1] return y我这个生成杨辉三角的函数为什么结果不对呢,有没有大佬帮看下
n = int(input()) print(-1 if n <= 2 else [2, 3, 2, 4][(n - 3) % 4])