一个正整数如果能表示成了两个正整数的平方差,则称这个数为“智慧数”,比如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;
}