问题描述:
兔子发现了一个数字序列,于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名,命名应该要与这个序列有关。由于兔子十分讨厌完全平方数,所以兔子开创了一个新的命名方式:这个序列中最大的不是完全平方数的数字就是他的名字。
现在兔子有一个序列,想要知道这个序列的名字是什么。
输入描述:
第一行一个整数 n,表示序列的长度。
第二行有 n 个整数 a
i
,表示序列中的 n 个数分别是多少。
输出描述:
输出仅一行,表示这个序列的名字,也就是这个序列中最大的非完全平方数。
解决思路:
1.先根据输入描述,定义变量n和数组a,存储进用户输入的数据
2.然后对数组a进行由小到大排序
3.从后往前遍历a数组寻找到第一个不是完全平方数的数字,存储进x变量,最后输出x变量;
代码:
#include <iostream>
using namespace std;
int n;
int a[1001];
int x;
bool isPerfectSquare(int num)
{
int num1 = 1;
while(num > 0)
{
num -= num1;
num1 += 2;
}
return num == 0;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int t;
for(int j=0;j<n;j++)
{
for(int i=j+1;i<n;i++)
{
if(a[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(int i=n-1;i>=0;i--)
{
int ans;
ans=isPerfectSquare(a[i]);
if(ans==0)
{
x=a[i];
break;
}
}
cout<<x;
}
标签:第十六,num1,int,兔子,问题,第二个,num,ans,序列 From: https://www.cnblogs.com/czfznb/p/17381199.html