1207: lolizlm的数字

发布时间:2024年01月19日
题目描述

lolizlm学姐给你用随机函数生成了N个非负整数字,但是学姐想知道它们加起来能不能被N整除,如果能,请输出这个N个数字中最大的数字,否则输出他们中最小的数字。

输入

第一行一个数字N

第二行N个数字分别用空格隔开

输出

输出一个数字

样例输入
5
1 2 3 4 5
样例输出
5
问题分析?

碰到这样的问题我的第一反应就是可能相加求和之后的那个数超出了整型和长整型变量表示的范围,为此每当将两个数求和之后我都会将这个数对N进行取余,这样得到新的余数加上一个新的数如果能够被N整除,说明原来的数加上新的数也能被N整除,为此只需要设计两个变量保存其中最大的数与最小的数就行了,然后根据能否被N整除来进行选择性的输出。

证明过程如下:

a = q_1N+r\\ r = a-q_1N\\ r + z = q_2N\\ a + z = q_2N+q_1N\\ a + z = (q_1+q_2)N\\
代码
?
#include<stdio.h>
int main(){
    unsigned int n, sum = 0, num, max=0,min = 0-1;
    scanf("%d",&n);
    for(int i = 0; i < n; i++){
        scanf("%d", &num);
        sum += num;
        sum %= n;
        if(max < num){
            max = num;
        }
        if(min > num){
            min = num;
        }
    }
    if(sum == 0){
        printf("%d", max);
    }else{
        printf("%d", min);
    }
    return 0;
}

文章来源:https://blog.csdn.net/apprentice_eye/article/details/135686785
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。