上海计算机学会2026年2月月赛C++丙组T1 乘积的秘密
乘积的秘密题目描述给定两个整数 A 与 B保证 A ≤ B。请求出从 A 一直乘到 B 的符号如果乘积大于 0输出 Positive如果乘积小于 0输出 Negative如果乘积等于 0输出 Zero。输入格式两个整数表示 a 与 b。输出格式输出一行为 Positive、Negative 或 Zero 之一。数据范围对于100%100\%100%的数据−109≤a≤b≤109-10^9 \le a \le b \le 10^9−109≤a≤b≤109。样例样例 1输入1 3输出Positive样例 2输入-3 -1输出Negative样例 3输入-1 1输出Zero题解解题思路我们不需要计算实际乘积数据范围极大直接计算会溢出只需要判断区间内是否包含0和负数的个数包含0如果区间[A, B]跨越0A≤0 且 B≥0乘积一定是0直接输出Zero全为负数区间内所有数都是负数负数个数为奇数时乘积为负偶数时为正全为正数乘积一定为正。代码逐行解析#includebits/stdc.h// 包含C所有常用头文件满足输入输出需求usingnamespacestd;// 使用标准命名空间简化代码书写intmain(){inta,b;// 定义两个整数变量存储输入的A、Bcinab;// 读取输入的两个整数// 核心判断1区间包含0a≤0 且 b≥0乘积为0if(a0b0){coutZero;}// 核心判断2全为负数且负数个数为奇数 → 乘积为负// 负数个数 b - a 1奇偶性elseif(b0(b-a1)%2!0){coutNegative;}// 剩余情况全为正数 / 全为负数且个数为偶数 → 乘积为正else{coutPositive;}return0;}关键逻辑验证判断0a0b0精准覆盖所有包含0的区间例如-1 1、0 5、-3 0负数个数奇偶性负数总个数 b - a 1(b-a)%2和(b-a1)%2结果相反(b-a)%20→ 个数为奇数 → 输出Negative反之 → 个数为偶数 → 输出Positive全正数自动进入最后一个分支输出Positive。样例测试输入1 3全正数 → 输出Positive输入-3 -1全负数(-1)-(-3)22%20→ 输出Negative输入-1 1包含0 → 输出Zero。总结代码逻辑完全正确无需任何修改核心技巧不计算乘积通过0的存在性和负数个数奇偶性判断符号完美适配题目超大数据范围时间复杂度 O(1)。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2474646.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!