兔子发现了一个数字序列,于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名,命名应该要与这个序列有关。由于兔子十分讨厌完全平方数,所以兔子开创了一个新的命名方式:这个序列中最大的不是完全平方数的数字就是他的名字。
现在兔子有一个序列,想要知道这个序列的名字是什么。
第一行一个整数 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 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 <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 <stdio.h> #include<math.h> int square(int n,int *arr) { int i,max = 0; for(i=0;i<n;i++) { int x = 0; x = sqrt(arr[i]); if(arr[i]==pow(x,2)) { continue; } else { if(arr[i]>max) { max = arr[i]; } } } return max; } int main() { int n; scanf("%d",&n); int arr[n]; int i; for(i=0;i<n;i++) { scanf("%d ",arr+i); } int ret = square(n,arr); printf("%d",ret); return 0; }
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> int main() { int n = 0; scanf("%d", &n); float *ar = (float *)malloc(n * sizeof(float));//定义动态数组ar for (int i = 0; i < n; i++) { scanf("%f", &ar[i]);//循环输入数据 } for (int i = 0; i < n; i++)//冒泡排序;将数组从小到大排列 { for (int j = i + 1; j < n; j++) { if (ar[i] > ar[j]) { int temp = ar[i]; ar[i] = ar[j]; ar[j] = temp; } } } for (int i = n-1; i >= 0; i--)//从最大数开始判断,不是完全平方数则输出,结束程序运行 { double a = sqrt(ar[i]); if (a != (int)a) { printf("%d", (int)ar[i]); break; } } return 0; }
#include <stdio.h> #include <math.h> int judge(float x) { return (int)sqrt(x)==sqrt(x)?0:1; } int main() { int n,max=0; scanf("%d",&n); int a[n]; for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]>max&&judge((float)a[i])) { max=a[i]; } } printf("%d\n",max); return 0; }
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { unsigned int n, *a, tmp; int i, j; scanf("%d\n", &n); a = (unsigned int*)calloc(n, sizeof(unsigned int)); for (i = 0; i < n; i++) scanf("%u", a + i); for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) { if (*(a + i) < * (a + j)) { tmp = *(a + i); *(a + i) = *(a + j); *(a + j) = tmp; } } } for (i = 0; i < n; i++) { tmp = (unsigned int)sqrt(*(a + i)); if (*(a + i) != (tmp * tmp)) { printf("%u\n", *(a + i)); return 0; } } return 0; }
#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 max_in_array(int a[], int length) { int max = 0; for(int i = 0; i < length; i++) { if(max < a[i]) max = a[i]; } return max; } int Is_perfect_square(int a) { double n; n = sqrt(a); if(n-(int)n == 0) return 1; else return 0; } int main() { int length_n = 0, length_m = 0, n[1000] = {0}, m[1000] = {0}; scanf("%d", &length_n); for(int i = 0; i < length_n; i++) scanf("%d", &n[i]); for(int i = 0; i < length_n; i++) { if(Is_perfect_square(n[i]) == 0) { m[length_m] = n[i]; length_m++; } } printf("%d", max_in_array(m, length_m)); 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; }
#include <stdio.h> #include <math.h> int panduan(int n); int main() { int n; int max=0; scanf("%d",&n); int a[n]; for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(panduan(a[i])==0) { if(a[i]>max) max=a[i]; } } printf("%d",max); return 0; } int panduan(int n) { if(sqrt(n)==(int)sqrt(n)) return 1; return 0; }大家看看
#include<stdio.h> #include<math.h> //如果一个自然数a是某一个整数b的平方,那么这个自然数a叫做完全平方数。 int main() { int n = 0; int i = 0; scanf("%d",&n); int arr[1000] = {0}; int max = 0; int flag = 1; for(i=0;i<n;i++) { scanf("%d ",&arr[i]); for(int j = 1;j<=sqrt(arr[i]);j++) { if(arr[i]==pow(j,2))//是完全平方数 { flag = 0; break; } } if(flag==1&&max<arr[i]) { max = arr[i]; } flag = 1; } printf("%d\n",max); return 0; }