当前位置: 首页 > news >正文

题解:CF2137C Maximum Even Sum

题意是给定两个数 \(a,b\),你可以进行一次操作,选定一个 \(b\) 的因数 \(k\),将 \(a\) 变为 \(a \times k\),并将 \(b\) 变为 \(b/k\),求出如何操作可以使得 \(a+b\) 是一个偶数,并且值最大,请输出这个最大值。
如果不考虑 \(a+b\) 是否为偶数,容易想到最大值为 \(a\times b+1\)
接着考虑如何使 \(a+b\) 为偶数。
首先如果 \(a,b\) 均为奇数,答案必然为 \(a\times b+1\)。因为奇数的乘积必然还是奇数。
接着如果 \(b\) 为奇数,\(a\) 为偶数必然无解。因为无论如何操作都不可能让 \(b\) 变为偶数。
剩余情况由于 \(b\) 为偶数则必然可以进行一次操作,只需要判断乘积是否为4的倍数即可。
代码如下:

#include<bits/stdc++.h>
using namespace std;
int t;
long long a,b;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--){cin>>a>>b;if(a%2&&b%2)cout<<a*b+1<<'\n';else if(a%2){long long k=a*b;if(k%4==0)cout<<k/2+2<<'\n';else cout<<"-1\n";}else{if(b%2)cout<<"-1\n";else cout<<a*b/2+2<<'\n';}}
}
http://www.wxhsa.cn/company.asp?id=3674

相关文章:

  • 第02周 java预习
  • 编码规范
  • 深入解析:【译】Visual Studio 八月更新已发布 —— 更智能的人工智能、更出色的调试功能以及更多控制权
  • 命令模式在 TPL Dataflow 反馈回路管道中的应用及问题解决
  • Ubuntu 24.04 服务器调整MySQL 8.0.42 三节点集群(一主两从架构)安装部署配置教程
  • 使用almalinux基础镜像创建nginx镜像
  • docke容器版Nessus登录+破解+激活+特征库更新
  • 我把Cursor当磁盘清理工具用,非常棒! - ukyo-
  • vue项目
  • 第九篇:数据库服务克隆应用
  • Anti-Proxy Attendance 题解
  • 【2024-2025第二学期】助教工作总结
  • 开始每小时记录日程
  • 5【鸿蒙/OpenHarmony/NDK】使用Node-API进行异步任务开发
  • 控制器指令
  • 题解:AT_abc421_c [ABC421C] Alternated
  • MySQL数据库:SQL数据类型
  • Ubuntu 安装
  • 幼等数论
  • 搭建rocketmq的三主三从遇到的坑
  • 深入解析:轻松Linux-9.进程间通信
  • 2025.9.14——1黄1绿
  • Ubuntu 中改图片大小
  • Day01
  • 认识眼图和眼图的参数
  • 【芯片设计-信号完整性 SI 学习 1.2 -- loopback 回环测试】 - 实践
  • 【科研绘图系列】R语言绘制地图和散点图 - 指南
  • Java NIO 学习小记
  • 扩展欧几里得算法求乘法逆元
  • redis实现缓存3-封装redis工具类