第N个智慧数

一个正整数如果能表示成了两个正整数的平方差,则称这个数为“智慧数”,比如16就等于5的平方减去3的平方,所以16就是一个智慧数,从1开始的自然数列中,将“智慧数”从小到大编号为1,2,3,„„,n。现输入一个正整数n,输出第n个“智慧数”。

输入
仅包含一个正整数 n(1≤n≤100)。

输出
仅包含一个正整数,表示编号为 n 的智慧数。
样例输入
复制样例数据
3
样例输出
7

直接打表

#include <iostream>
#include <algorithm>
using namespace std;
int a[100005];
int main()
{
	int i,j;
	int k=0;
	for(i=2;i<=250;i++){
		for(j=i-1;j>=1;j--)
			a[k++]=i*i-j*j;
	}
	sort(a,a+k);
	for(i=0;i<k;i++){
		printf("%d\n",a[i]);
	}
	return 0;
}

代码

#include <iostream>
#include <algorithm>
using namespace std;
int a[150]={3,5,7,8,9,11,12,13,15,16,
            17 ,19,20,21,23,24,25,27,28,29,31,32,
            33,35,36,37,39,40,41,43,44,45,47,48,49,
            51,52,53,55,56,57,59,60,61,63,64,65,67,
			68,69,71,72,73,75,76,77,79,80,81,83,84,85,
            87,88,89,91,92,93,95,96,97,99,100,101,103,
            104,105,107,108,109,111,112,113,115,116,117,119,
			120,121,123,124,125,127,128,129,131,132,133,135,136,137,
            139,140,141,143,144,145,147,148,149,151,152,153,155,156,
			157,159,160};
int main()
{
	int n;
	cin>>n;
	cout<<a[n-1]<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42868863/article/details/85269771