『题解』SPOJ SP2148 CANDY3 - Candy III
题目大意
有 \(n\) 堆糖,每堆分别有 \(a_1,a_2,a_3,\dots,a_n\),问能不能整除 \(n\)。
思路
很简单,全部相加后对 \(n\) 取模,看看是否为 \(0\) 即可。
由于题目中说 \(a_i \le 10^{18}\),所以肯定要开 long long,在加法过程中,可以每加一次就取模,这样就可以保证不爆了。
在输入时可以直接进行加法和取模,题目中也没说 \(n\) 的大小,不能确定 \(a\) 数组的大小。直接开一个变量用于输入即可。
代码
#include <iostream>
using namespace std;
long long t,n,x,ans; // x 用于输入
int main(){
cin >> t;
while(t--){
cin >> n;
for(int i=1; i<=n; i++){
cin >> x;
ans+=x;
ans%=n;
}
if(ans) puts("NO"); // ans 不为 0,不能整除 n
else puts("YES"); // ans 为 0,可以整除 n
ans=0; // 别忘了清 0
}
return 0;
}

浙公网安备 33010602011771号