lolizlm学姐给你用随机函数生成了N个非负整数字,但是学姐想知道它们加起来能不能被N整除,如果能,请输出这个N个数字中最大的数字,否则输出他们中最小的数字。
第一行一个数字N
第二行N个数字分别用空格隔开
输出一个数字
5
1 2 3 4 5
5
碰到这样的问题我的第一反应就是可能相加求和之后的那个数超出了整型和长整型变量表示的范围,为此每当将两个数求和之后我都会将这个数对N进行取余,这样得到新的余数加上一个新的数如果能够被N整除,说明原来的数加上新的数也能被N整除,为此只需要设计两个变量保存其中最大的数与最小的数就行了,然后根据能否被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;
}