『题解』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;
}
posted @ 2022-04-13 15:39  仙山有茗  阅读(31)  评论(0)    收藏  举报