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
    • 无限进步
相关推荐
空奈qwq1 小时前
ANN 全连接神经网络入门指南:从神经元到深度学习的第一步
人工智能·python·深度学习·神经网络·算法·机器学习
hetao17338371 小时前
2026-09-27~28 hetao1733837 的刷题记录
c++·算法
2601_962218611 小时前
C++的几种编译器的实现
开发语言·c++
Godspeed Zhao2 小时前
现代智能雷达技术15——算法(1)
人工智能·算法·雷达
代码什么用2 小时前
LeetCode-42. 接雨水
算法·leetcode
多弗朗皮卡丘2 小时前
C++ stack和queue
开发语言·c++·deque·queue·stack·容器适配器
lengxuenong2 小时前
枚举及其优化学习手册
c++·学习·算法·青少年编程
小O的算法实验室2 小时前
IEEE TAI,RoCo:基于角色的LLM协作实现自动启发式设计
算法
小范的技术工坊2 小时前
大模型蒸馏
人工智能·算法·数据挖掘·大模型