专栏文章
题解:CF2137C Maximum Even Sum
CF2137C题解参与者 3已保存评论 7
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @minz3nsz
- 此快照首次捕获于
- 2025/12/02 10:42 3 个月前
- 此快照最后确认于
- 2025/12/02 10:42 3 个月前
CF2137C 题解
题意
给定两个数 ,你可以选择一个 的因子 ,让 变为 , 变为 ,求一次操作完 的最大偶数值,若不可能输出
-1。思路
显然可以分类讨论。
对于最简单的情况, 均为奇数,可以选择 进行操作,使 变为 。
若 为偶数, 为奇数,容易发现对于任意的 都不会使 的奇偶性发生改变,因此 始终为奇数,输出
-1。若 为奇数, 为偶数,如果 ,那么当 为奇数时 为奇数 为偶数, 为偶数时 为偶数 为奇数,显然不能相加为偶数,输出
-1。如果 ,则选择 ,使 变为 。若 为偶数, 为偶数,取 ,使 变为 。
代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--){
int a,b;
cin>>a>>b;
if(a%2==0&&b%2==1){
cout<<-1<<endl;
continue;
}
else if(a%2==0&&b%2==0){
cout<<a*(b/2)+2<<endl;
}
else if(a%2==1&&b%2==1){
cout<<a*b+1<<endl;
}
else{
if(b%4!=0){
cout<<-1<<endl;
}
else{
cout<<a*(b/2)+2<<endl;
}
}
}
return 0;
}
相关推荐
评论
共 7 条评论,欢迎与作者交流。
正在加载评论...