首页 > 试题广场 >

兔子的序列

[编程题]兔子的序列
  • 热度指数:5957 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
兔子发现了一个数字序列,于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名,命名应该要与这个序列有关。由于兔子十分讨厌完全平方数,所以兔子开创了一个新的命名方式:这个序列中最大的不是完全平方数的数字就是他的名字。
现在兔子有一个序列,想要知道这个序列的名字是什么。

输入描述:
第一行一个整数 n,表示序列的长度。 
第二行有 n 个整数 ai,表示序列中的 n 个数分别是多少。


输出描述:
输出仅一行,表示这个序列的名字,也就是这个序列中最大的非完全平方数。
示例1

输入

2
4 2

输出

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 <stdbool.h>
#include <math.h>

bool issquare(int x)
{
    int a = (int)sqrt(x);
    if(x == a * a)
    return true;
    return false;
}

int main() {
    int a, max = 0;
    scanf("%d", &a);
    int arr[a];
    for(int i = 0; i < a; i++)
    {
        scanf("%d", arr + i);
        if(!issquare(arr[i]) && arr[i] > max)
        max = arr[i];
    }
    printf("%d\n", max);
    return 0;
}
发表于 2025-05-12 01:57:31 回复(0)
#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;
}

发表于 2024-12-24 15:21:31 回复(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;
}


发表于 2024-10-31 21:15:39 回复(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;
}

发表于 2024-07-17 03:49:03 回复(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.
//

发表于 2024-07-14 20:38:41 回复(0)
#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;
}

发表于 2023-11-26 10:09:16 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void bubble(int arr[], int n)
{
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int tmp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}

int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        int * arr = (int*)malloc(n * sizeof(int));
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &arr[i]);
        }
        bubble(arr, n);
        int flag = 0;
        for (int i = n - 1; i >= 0; i--)
        {
            double a = sqrt(arr[i]);
            if (a != (int)a)
            {
                printf("%d\n", arr[i]);
                flag = 1;
                break;
            }
        }
        if (!flag)
        {
            break;
        }
        free(arr);
    }
    return 0;
}
发表于 2023-06-09 16:57:56 回复(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;
}

发表于 2022-11-26 16:11:32 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#pragma warning(disable:4996)
 void Sort(int *array, int n) {
     for (int i = 0;i < n - 1; i++) {
         for (int j = 0; j < n - i - 1 ; j++) {
             if (array[j] > array[j + 1]) {
                 array[j] = array[j] ^ array[j + 1];
                 array[j + 1] = array[j] ^ array[j + 1];
                 array[j] = array[j] ^ array[j + 1];
             }
         }
     }
 }
/*******************************************************************
*  找一个数组中的最大的非完全平方数
*******************************************************************/
 int findMax(int* arr, int n) {
     Sort(arr, n);
     int x = 0;
     int max = 0;
     for (int i = 0; i < n; i++) {
         x = sqrt(arr[i]);
         if (x * x != arr[i]) {
             max = arr[i];
             if (max < arr[i]) {
                 max = arr[i];
             }
         }
     }
     return max;
 }
int main() {
    int num = 0;
    scanf("%d", &num);
    int* a = (int*)malloc(sizeof(int) * num);
    for (int i = 0; i < num; i++) {
        scanf("%d", &a[i]);
    }
    int ret = findMax(a, num);
    printf("%d\n", ret);

    return 0;
}
发表于 2022-11-20 21:14:24 回复(0)
#include <stdio.h>
#include <math.h>
int main() {
    int a = 0,arr[1000] = {0};
    while (scanf("%d", &a) != EOF) { 
       int i = 0;
       int m = 0;
       for(i = 0; i < a;i++)
       {
           scanf("%d",&arr[i]);
       }
       m = arr[0];
       for(i = 1;i < a;i++)
       {
           float n = sqrt(arr[i]);
           if(n - (int)n != 0)
           {
                m = m > arr[i] ? m : arr[i];
           }
       }
       printf("%d\n",m);
    }
    return 0;
}
发表于 2022-11-19 11:35:58 回复(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;
}

发表于 2022-11-17 10:38:28 回复(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;
}
发表于 2022-10-06 17:14:24 回复(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;
}

发表于 2022-08-11 17:03:27 回复(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;
}

发表于 2022-07-06 13:24:39 回复(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;
}

发表于 2022-06-16 21:23:10 回复(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;
}


大家看看
发表于 2022-05-29 20:07:07 回复(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;
}

发表于 2022-03-17 15:04:05 回复(0)