D - 划数

这个题目有一个潜在条件,所有被划掉的数,都会产生一个它们的和对 11 取模的数。

根据这个关系我们可以知道,这些被划掉的数一定会产生另外一个数,而且这个数是所有被划掉的数的和。

那么我们只需要判断 cnt 存在的时候就可以了
另外 2 的时候要特判,因为此时并不会处理数

#include<iostream>
using namespace std;

int n ,cnt;

int main(){
    while(cin >> n >> cnt){
        if(n == 2){
            int ans = 0;
            bool f = false;
            for(int i = 1 ; i <= n ; i ++){
                int x ; scanf("%d",&x);
                if(x == cnt && f){f = false; continue;}
                ans = x;
            }
            printf("%d\n",ans);
            continue;
        }
        int ans = 0;
        bool f = true;
        for(int i = 1 ; i <= n ; i ++){
            int x ; scanf("%d",&x);
            if(f && x == cnt){f = false ; continue ;}
            ans = (ans + x) % 11;
        }
        printf("%d\n",ans);
    }
    return 0;
}