A+B问题 进制处理【逻辑控制 运算符】

🚗🚗🚗🚗🚗🚗🚗 数据结构专栏🚗🚗🚗🚗🚗🚗🚗🚗🚗🚗

🛹🛹🛹🛹🛹🛹🛹小知识总结分享🛹🛹🛹🛹🛹🛹🛹🛹🛹🛹

🚀🚀🚀🚀🚀🚀🚀题目历练场🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀

🚢🚢🚢🚢🚢🚢🚢功能包与集合类介绍🚢🚢🚢🚢🚢🚢🚢🚢🚢

🛞🛞🛞🛞🛞🛞🛞java EE🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞

😘😘😘😘😘😘😘Agent大模型😘😘😘😘😘😘😘😘😘😘😘😘

今天和大家一起分享一道基础的算法题目

  • 题目来源 : HDOJ
cpp 复制代码
#include <iostream>
using namespace std;
/*
这个题目的A和B不是简单的整数,
而是两个时间,A和B 都是由3个整数组成,分别表示时分秒,
比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒。
*/
int main07() {
	int t;
	int ah, am, as;
	int bh, bm, bs;
	cin >> t;
	while (t--) {
		cin >> ah >> am >> as;
		cin >> bh >> bm >> bs;
		
		//对齐相加问题
		ah += bh;
		am += bm;
		as += bs;

		//进制处理 从地位到高位进行
		
		am += as / 60;
		as %= 60;

		ah += am / 60;
		am %= 60;

		cout << ah <<' ' << am <<' ' <<  as  << ' ' << endl;
	}


	return 0;
}

总结提炼

  1. 先全部直接对齐相加:同一维度的值先加在一起,不先考虑进位

    as += bs; // 秒相加
    am += bm; // 分相加
    ah += bh; // 小时相加

  2. 从最低位开始依次处理进位(重点!必须低位→高位,不能反过来)

    am += as / 60; // 秒溢出多少,加到分钟
    as %= 60; // 秒保留余数

    ah += am / 60; // 分钟溢出多少,加到小时
    am %= 60; // 分钟保留余数

  • 低位:进位 = 当前值 / 进制基数 当前值 = 当前值 % 进制基数
  • 把得到的进位加到上一位(高位)
  1. 最高位不需要取模,直接保留总和(小时没有上限)
  • 关键点提炼
  1. 顺序不能颠倒:先加所有位 → 低位先进位,再处理高位
    如果先处理高位再低位,低位产生的新进位就丢了。

  2. 公式通用:对于基数base

    高位 += 当前位 / base
    当前位 = 当前位 % base

  3. 混合进制(每一位进制不一样)也可以套用这个流程,只是每轮的 base 换成对应进制。

  • 我是Dylan
    • 无限进步
相关推荐
不会就选b3 小时前
C++补充部分(一)--lambda 表达式
开发语言·c++
罗西的思考9 小时前
【Agentic RL】Dressage Staleness 控制深度分析
人工智能·算法·机器学习
quaer9 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
丰色木夕10 小时前
Ubuntu22.04下源码编译安装USD-Brep
c++·ubuntu·nvidia·usd-brep
高晶10 小时前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员
ysbfsy10 小时前
大数计算思路
算法
高晶10 小时前
主从自动分配算法:平均值乘以设备数一半的选举基准值解析
算法·设计模式·程序员
学电子她就能回来吗11 小时前
LeetCode Hot 100|普通数组专题学习笔记(零基础版)
笔记·算法·leetcode
用户老李11 小时前
反向传播计算梯度举例
算法
niyongsheng11 小时前
多智能体连续时间内路径规划:AA-SIPP(m) 的 Rust 实现与算法
算法·rust·机器人