这道题没有什么思维含量,唯一考察的就是读题,真的难绷。因为这道题没有说明是否只能操作一次,样例给了跟没给一样...

所以只要按照可以多次操作理解,这道题就没有任何难度。强烈建议题面把话说明白,要么你就多给两个样例。

具体而言,本题的核心思路只有一个:对于任何大于等于2的数字n,如果n mod 2=0,那么最小代价就是2;如果不能满足n mod 2=0,只需要让n-1,即可满足mod 2=0;对于0,1,特判即可 所以本题一共有四种情况:

要么是2,要么是3,要么是1,要么是0

上代码:

using namespace std;
int n;
long long w;

int a[1000004] = {};

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> w;
		if(w>=2){
            if(w%2==0){
                a[i]=2;
            }else{
                a[i]=3;
            }
        }
        else{
            if(w==1)
            a[i]=1;
           else if(w==0)
             a[i]=0;  
        }
	}
	for (register int i = 0; i < n; i++) {
		cout << a[i] << '\n';
	}
    return 0;
}