- 题解
Day3 减法和求余 题解
- @ 2024-10-4 19:35:49
/*
样例说明
(1)
输入: 输出:
5 1 13
1 2 3 4 5
(1) 1-2=-1 (2) -1-4=-5 (3) -5-3=-8 (4) 5--8=13
综合:5-(1-(2+3+4)) = 5-1-(2+3+4) = 5-1+2+3+4+1-1=(1+2+3+4+5)-1-1
由此可知:n个数相减最大值=n个数相加-其中最小的数*2
(2)
输入: 输出:
3 2 100
100 400 905
(1) 905%400=105 (2) 100%105=100
综合:100%(905%400) = 100%905%400 = 100%400%905 = 100
由此可知:n个数取余求最大值=n个数中最小的那个
注意:还有一个坑
当n=1的时候,算出来的结果会是负数,这里要特判一下
数据范围:
n最多就10^5,开int可以解决
*/
#include<bits/stdc++.h>
using namespace std;
int n,k;
long long a[100010],sum;
int main(){
freopen("divmod.in","r",stdin);
freopen("divmod.out","w",stdout);
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]) sum+=a[i];
}
sort(a,a+n);//排序 找到最小值
if(n==1){//注意,这里是个坑!!!
cout<<a[0];
return 0;
}
if(k==1) cout<<sum-a[0]*2;//减法
else cout<<a[0];//求余
return 0;
}
0 条评论
目前还没有评论...