题解 | #运算符号#
运算符号
https://ac.nowcoder.com/acm/problem/248192
这道题没有什么思维含量,唯一考察的就是读题,真的难绷。因为这道题没有说明是否只能操作一次,样例给了跟没给一样...
所以只要按照可以多次操作理解,这道题就没有任何难度。强烈建议题面把话说明白,要么你就多给两个样例。
具体而言,本题的核心思路只有一个:对于任何大于等于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;
}