先生成一个杨辉三角形,然后找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;
}