2021年蓝桥杯C++c组真题 H.杨辉三角

77 阅读1分钟

H.杨辉三角形 - 蓝桥云课 (lanqiao.cn)

先生成一个杨辉三角形,然后找k值,找到k值了就求一下坐标,输出:

#include<bits/stdc++.h>
using namespace std;
int a[1000][1000];
int k;
int flag;
int main()
{
	a[0][0] = 1;
	a[1][0] = 1; a[1][1] = 1;

	for (int i = 2; i < 1000; i++)
	{
		a[i][0] = 1;
		a[i][i]=1;

		//其余部分等于上一行两边之和
		for (int j = 1; j < i; j++)
		{
			a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
		}
	}

	cin >> k;

	for (int i = 0; i < 1000; i++)
	{
		for (int j = 0; j < 1000; j++)
		{
			if (a[i][j] == k)
			{
				flag = 1;
				printf("%d",(i+1)*i/2+j+1);
				break;
			}
		}
		if (flag)break;
	}
	return 0;
}



//第二个版本
#include<bits/stdc++.h>
using namespace std;
int a[1000][1000];
int k;
int flag;
int main()
{

  for(int i=0;i<1000;i++)
  {
    	a[i][0] = 1;
	    a[i][i]=1;
  }


	for (int i = 2; i < 1000; i++)
	{
		for (int j = 1; j < i; j++)
		{
			a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
		}
	}

	cin >> k;

	for (int i = 0; i < 1000; i++)
	{
		for (int j = 0; j < 1000; j++)
		{
			if (a[i][j] == k)
			{
				flag = 1;
				printf("%d",(i+1)*i/2+j+1);
				break;
			}
		}
		if (flag)break;
	}
	return 0;
}

image.png