Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
132117 胡海峰老师 04四位数移位 C++ Accepted 1 MS 272 KB 2136 2025-10-05 21:27:13

Tests(8/8):


Code:

#include <iostream> //designed by hu 2025-10 using namespace std; int main(){ int num; cin>>num; int a,b,c,d; // a ×1000 + b×100 + c ×10 + d×1 abcd 1289--128 a = num / 1000; b = num /100 %10; c = num / 10 %10; d = num %10; cout<< d << a<<b<<c <<endl; return 0; } /* 解决这类数位操作题目的核心数学基础。为了更系统化, 我们可以将它们构建成一个完整的知识框架,并补充几点关键思想。 核心数学知识框架 1. 十进制记数系统 核心:逢十进一 任何一个数都可以表示为:数字 = 千位×1000 + 百位×100 + 十位×10 + 个位×1 2. 数码与数位 数码:0-9这些基本数字符号 数位:数码在数中所处的位置(个位、十位、百位等)333 在3456中:千位是3,百位是4,十位是5,个位是6 3. 位权概念 每个数位代表的实际数值 = 数码 × 位权 位权:10的幂次(...1000, 100, 10, 1)2233: 2*1000 + 2*100 + 3*10+3*1 4. 整除与取余运算 /:获取商,用于"去掉低位" 2389/100 --->23 %:获取余数,用于"提取低位" 2389%100 --->89 重要补充 5. 模运算的周期性 % 10 总是得到个位数 % 100 总是得到最后两位 这是提取数位的理论基础 6. 数位分离的通用模式 个位 = number % 10 十位 = (number / 10) % 10 百位 = (number / 100) % 10 千位 = (number / 1000) % 10 7. 数位重组的逆向思维 分离是分析,重组是合成 新数 = 新千位×1000 + 新百位×100 + 新十位×10 + 新个位 8. 编程中的边界考虑 前导零问题(如0123在数学上是123,但在编程中可能需要保留格式) 数据类型范围限制(int的表示范围) 思维流程示例(针对3456→6345) 分析阶段(分离数位): 个位:3456 % 10 = 6 十位:(3456 / 10) % 10 = 5 百位:(3456 / 100) % 10 = 4 千位:(3456 / 1000) % 10 = 3 重组阶段(移位构建): 新千位 = 原个位 = 6 新百位 = 原千位 = 3 新十位 = 原百位 = 4 新个位 = 原十位 = 5 新数 = 6×1000 + 3×100 + 4×10 + 5 = 6345 */