兔子发现了一个数字序列,于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名,命名应该要与这个序列有关。由于兔子十分讨厌完全平方数,所以兔子开创了一个新的命名方式:这个序列中最大的不是完全平方数的数字就是他的名字。
现在兔子有一个序列,想要知道这个序列的名字是什么。
第一行一个整数 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<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; }
#include<stdio.h> #include <math.h> int main() { int n=0; int arr[9999999]={0}; scanf("%d\n",&n); int i=0; int max=0; for(i=0;i<n;i++) { scanf("%d",&arr[i]); int a=sqrt(arr[i]); if(arr[i]==pow(a,2)) { continue; } else { if(arr[i]>max) { max=arr[i]; } } } printf("%d",max); } //快都看我的代码