无理想的闲鱼 发表于 2022-12-1 10:27:10

【蓝桥杯真题7 难度:中等】杨辉三角形 2022.12.1

本帖最后由 无理想的闲鱼 于 2023-1-19 09:28 编辑

【2021】省赛

背景:
杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。
tip:

题目:
如果我们从上到下,从左到右把所有数字排成一列,可以得到以下数列:1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,……
给定一个正整数N,请你输出数列中第一次出现N是在第几个数?

输入描述:输入一个整数N
输出描述:输出一个整数代表答案
输入示例1:6
输出示例1:13
输入示例2:154
输出示例2:11937
输入示例3:456
输出示例3:104198

**** Hidden Message *****

lxping 发表于 2022-12-1 13:19:07

pos = 3
ts =

N = int(input())
if N == 1:
    print("1")
else:
    while True:
      ts = + + ts for i in range(len(ts)-1)] +
      if N in ts:
            print( pos + ts.index(N) + 1)
            break
      else:
            pos += len(ts)

hellometa 发表于 2022-12-1 13:20:45

学习

lxping 发表于 2022-12-1 13:22:51

应该还可以用递归吧

zhangjinxuan 发表于 2022-12-1 14:20:26

来一个C凑热闹{:10_256:}
#include <stdio.h>

int n, tot = 1, a = {};
int main() {
        a = 1;
        scanf("%d", &n);
        if (n == 1) {
                puts("1");
                return 0;
        }
        for (int i = 2; i <= 1000; ++i) {
                for (int j = 1; j <= i; ++j) {
                        a = a + a;
                        ++tot;
                        if (a == n) {
                                printf("%d", tot);
                                return 0;
                        }
                }
        }
}

zhangjinxuan 发表于 2022-12-1 14:21:20

lxping 发表于 2022-12-1 13:22
应该还可以用递归吧

完全可以,组合数就是可以用递归来求啊,不过递推不香吗{:10_256:}

zhangjinxuan 发表于 2022-12-1 14:21:45

怎么又在审核啊

lxping 发表于 2022-12-1 14:28:30

zhangjinxuan 发表于 2022-12-1 14:20
来一个C凑热闹

{:5_106:}

Cccf$ 发表于 2022-12-1 16:01:50

import math
def FirstAppear(n):
    ans = [((i * (i + 1) // 2) + j + 1) for i in range(n + 1) for j in range(n // 2 + 2) if math.comb(i,j) == n]
    return ans

FirstAppear(6)
13
FirstAppear(154)
11937
FirstAppear(456)
104198

wangyanren 发表于 2022-12-1 16:59:23

可怕 想领个币 都那么难

hellometa 发表于 2022-12-1 17:21:31

学习

怂小白 发表于 2022-12-4 04:36:53

这个我当年用C++做过作业

香蕉那个不拿拿 发表于 2022-12-4 18:38:43

可怕 想领个币 都那么难

sdad1990 发表于 2022-12-5 04:37:01

{:5_102:}

hangzhoucong 发表于 2022-12-5 15:48:38

大神,我膜拜你

Ftxz1034 发表于 2022-12-6 10:35:54

#杨辉三角
N = int(input('给定一个正整数N\n'))
def jiecheng(x):
    #阶乘函数
    a = 1
    if x == 1:
      return 1
    else:
      for i in range(1,x+1):
            a *= i
      return a
def fun1(x):
    #生成杨辉三角的每一行
    s = []
    if x == 0:
      s.append(1)
    else:
      for i in range(x + 1):
            a = jiecheng(x)//(jiecheng(i) * jiecheng(x - i))
            s.append(a)
    return s
def fun2(x):
    #将每一行从上到下,从左到右组合成一个列表
    s =
    for i in range(1,x+1):
      a = fun1(i)
      s.extend(a)
    return s
def fun(x):
    #寻找整数N的位置
    i = 1
    s = fun2(x)
    while x not in s:
      s = fun2(x + i)
      i += 1
    else:
      a = 0
      for i in s:
            a += 1
            if i == x:
                return a
print(fun(N))

zhangziyi 发表于 2022-12-6 19:53:28

{:10_254:}

sleep-boy 发表于 2022-12-7 15:21:22

仰慕下大神            

鱼ccccvvv 发表于 2022-12-23 14:14:29

太难了吧|д)!!

jjkkll1223 发表于 2023-5-14 13:18:30

全網了
页: [1] 2
查看完整版本: 【蓝桥杯真题7 难度:中等】杨辉三角形 2022.12.1