兔子发现了一个数字序列,于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名,命名应该要与这个序列有关。由于兔子十分讨厌完全平方数,所以兔子开创了一个新的命名方式:这个序列中最大的不是完全平方数的数字就是他的名字。
现在兔子有一个序列,想要知道这个序列的名字是什么。
第一行一个整数 n,表示序列的长度。
第二行有 n 个整数 ai,表示序列中的 n 个数分别是多少。
输出仅一行,表示这个序列的名字,也就是这个序列中最大的非完全平方数。
2 4 2
2
8 1 576 2 8 32 64 4 16
32
对于 50%的数据
n = 1
对于 100%的数据
1≤ n ≤ 1000,1 ≤ ai ≤ 1000
数据保证至少有一个非完全平方数
#include<stdio.h>
#include<math.h>
int main() {
int n = 0, input = 0, max_ret = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &input);
if (input != pow((int)sqrt(input), 2) && input > max_ret)
max_ret = input;
}
printf("%d\n", max_ret);
return 0;
} #include <stdio.h>
#include <math.h>
int main(){
int max = -1, len, n;
scanf("%d", &len);
for(int i = 0; i < len; i++){
scanf("%d", &n);
max = (pow((int)sqrt(n), 2) != n) && max < n? n : max;
}
printf("%d", max);
return 0;
} import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
Arrays.sort(arr);
int len=arr.length;
for(int i=len-1;i>=0;i--){
int x=(int)Math.sqrt(arr[i]);
if(x*x!=arr[i]){
System.out.print(arr[i]);
break;
}
}
}
} #include <math.h>
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int arr[n],max=0;
for (int i=0;i<n;i++) {
scanf("%d",&arr[i]);
if(sqrt(arr[i])!=(int)sqrt(arr[i])){
if (arr[i]>max) {
max=arr[i];
}
}
}
printf("%d",max);
return 0;
} #include <iostream>
using namespace std;
int pd(int x){
bool flag =true;
for(int i=35;i>0;i--){
if (x==i*i) flag=false;
}
if (flag)return (x);
else return 0;
}
int main() {
int n;
cin>>n;
int a[n];
int max=0;
for(int i=0;i<n;i++){
cin>>a[i];
if(pd(a[i])>max)max=pd(a[i]);
}
cout<<max;
} #include <iostream>
#include<cmath>
using namespace std;
int main() {
int a;
cin>>a;
int arr[a];
int max=0;
for(int i=0;i<a;i++)
{
int flag=0;
cin>>arr[i];
for(int j=1;j<sqrt(arr[i])+1;j++)
{
int c=pow(j,2);
if(arr[i]==c)
{
flag=1;
}
}
if(flag!=1&&arr[i]>max)
{
max=arr[i];
}
}
cout<<max;
} #include<stdio.h>
#include<math.h>
int Max_sqrt(int a)
{
int i = 0;
int input = 0;
int max = 0;
int vale = 0;
for(i=0;i<a;i++)
{
scanf("%d ",&input);
vale = (int)sqrt(input);
if(vale * vale != input && input > max)
{
max = input;
}
}
return max;
}
int main()
{
int a = 0;
scanf("%d\n",&a);
int ret = Max_sqrt(a);
printf("%d",ret);
return 0;
} #include <stdio.h>
#include <math.h>
int main() {
int a,b[1000];
scanf("%d",&a);
for (int x=0; x<a; x++) {
scanf("%d",&b[x]);
}
//判断数组中每个数是否能开平方,不能则记入在数组中并获得这个数组最后一个元素的下标
int shi=0,sum[1000],i=0;
for (int x=0; x<a; x++) {
for (int y=0; y<b[x]; y++) {//从0的平方到(元素-1)平方依次对比是否与元素相等
if (pow(y, 2)==b[x]) {
shi=1;
break;
}
}
if (shi==0) { //无法开根的数记入下来
sum[i]=b[x];
i++;
}
shi=0;
}
i--;
//将数组中的元素转换成从小到大的顺序
int zhongzhuan=0,tou=0;
for (int x=0; x<=i; x++) {
tou=0;
for (int y=1; y<=i; y++) {
if (sum[tou]>sum[tou+1]) {
zhongzhuan=sum[tou];
sum[tou]=sum[tou+1];
sum[tou+1]=zhongzhuan;
}
tou++;
}
}
printf("%d",sum[i]);
return 0;
} #include <stdio.h>
#include<math.h>
int Incomplete_square_number(int* p,int n)
{
int i = 0;
double drr[1000] = { 0 };
int ret = 0;
for (i = 0; i < n; i++)
{
int sum = sqrt(*(p + i));
if (sum*sum!=*(p+i))
{
drr[ret] = *(p + i);
}
ret++;
}
double Max = drr[0];
for (i = 0; i < ret; i++)
{
if (drr[i] > Max)
{
Max = drr[i];
}
}
return Max;
}
int main()
{
int n = 0;
scanf("%d", &n);
int arr[1000] = { 0 };
int i=0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
int max_Incomplete_square_number =Incomplete_square_number(arr,n);
printf("%d", max_Incomplete_square_number);
return 0;
} #include <math.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
//判断释放是完全平方数
bool IsPerfectSquare(int n)
{
double a = sqrt(n);
//b必须是double型,比较的时候会类型转换
double b = (int)sqrt(n);
if(a == b)
return true;
return false;
}
int Traverse()
{
int n;
scanf("%d", &n);
int* a = malloc(sizeof(int) * n);
int i = 0;
while (i < n)
{
scanf("%d", &a[i]);
i++;
}
int MAX = a[0];
for(int i = 0; i < n; i++)
{
if(!IsPerfectSquare(a[i]) && MAX > a[i])
MAX = a[i];
}
free(a);
return MAX;
}
int main()
{
int r = Traverse();
printf("%d\n", r);
return 0;
} #include <stdio.h>
#include <math.h>
#define MAX 1000
int find_name(int n, int *num){
int temp[n];
int count = 0;
//如果一个数开方后的乘积还是原来的数,那么这个数就是完全平方数
for (int i = 0; i < n; i++) {
int root = sqrt(num[i]);
if (root * root != num[i]){
temp[count++] = num[i];
}
}
//取最大值
int max = temp[0];
for (int i = 1; i < count; i++) {
if (max < temp[i]){
int tmp = max;
max = temp[i];
temp[i] = tmp;
}
}
return max;
}
int main() {
int n;
int num[MAX];
scanf("%d",&n);
for (int i = 0; i < n; i++) {
scanf("\n%d",&num[i]);
}
int ret = find_name(n, num);
printf("%d",ret);
return 0;
}
//
// Created by Wilbur Lee on 14/7/2024.
//
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int a;
int arry[1000] = {0};
cin >> a;
int max = 0;
for (int i = 0; i < a; i++)
{
cin >> arry[i];
if (pow((int)sqrt(arry[i]),2) != arry[i])
{
if (arry[i] > max)
{
max = arry[i];
}
}
}
cout << max << endl;
} #include <stdio.h>
#include <math.h>
// 判断一个数是否为完全平方数
int is(int num)
{
int s = (int)sqrt(num);
return (s * s == num);
}
int main()
{
int n = 0;
scanf("%d", &n);
int se[1000] = {0};
for (int i = 0; i < n; i++)
{
scanf("%d", &se[i]);
}
int max = -1; // 初始化为-1,因为序列中的数可能为非负数
for (int i = 0; i < n; i++)
{
if (!is(se[i]) && se[i] > max)
{
max = se[i];
}
}
printf("%d\n", max); // 输出这个序列的名字,即最大的非完全平方数
return 0;
} #include <stdio.h>
#include <math.h>
//找出 最大数de下标
void max(int n, int arr[], int* m) {
int i = 0, max = 0;
for (i = 0; i < n; i++)
if (max < arr[i]) {
max = arr[i];
*m = i;
}
}
//判断是否是完全平方数
int fun(int m) {
int i = 0;
for (i = 0; i <= sqrt(1000); i++) {
if (pow(i, 2) == m)return 0;
}
return 1;
}
int main() {
//初始化数据
int n = 0, arr[1000], i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int m = 0;
max(n, arr, &m); //找出 最大数de下标
while (1) {
if (fun(arr[m])) break;//判断是否是完全平方数
else arr[m] = 0; //让最大数但是完全平方数变为0;
}
//输出
printf("%d", arr[m]);
return 0;
}