Raptor-数字分解
1. 问题描述
之前写过一些 Raptor 的程序,里面经常会直接或间接遇到数字分解的要求。比如一个数 num = 1234567,把这个数字逆序输出;判断一个数是否为水仙花数,153=1^3 + 5^3 + 3^3,需要提取各位数字;或者 求一个正整数(位数不固定)的各位数字之和;判断一个数是否为回文数 等等。现在把这个需求提取出来,写成一篇博客,供后续相关需求引用参考。(上面的博客链接是跟数字分解相关的博客,有的写于本篇博客之前,有的写于本篇博客之后,有需求的可以参考相关内容。)
2. 算法分析
我们利用数组和求余运算来实现数字分解任务。Raptor 里面,"REM, MOD, %" 这三个都可以当做求余运数算符号,本例中,我们用 MOD 来指代求余数运算符号。利用求余运算,提取个位数字,然后存储在数组中。
比如 num = 1234567,数组为 a,循环变量 i=1。记一个临时变量 n=num,因为 num 可能会在后面用到,如果直接改变 num,后面就不知道原始的 num 值是多少了。然后进行如下循环操作(注意每一步完了 n, a 和 i 是如何变化的):
- n MOD 10 = 7, a[i] = 7, n = floor(n/10) = 123456, i = i + 1,此时 i=2;
- n MOD 10 = 6, a[i] = 6, n = floor(n/10) = 12345, i = i + 1,此时 i=3;
- n MOD 10 = 5, a[i] = 5, n = floor(n/10) = 1234, i = i + 1,此时 i=4;
- n MOD 10 = 4, a[i] = 4, n = floor(n/10) = 123, i = i + 1,此时 i=5;
- n MOD 10 = 3, a[i] = 3, n = floor(n/10) = 12, i = i + 1,此时 i=6;
- n MOD 10 = 2, a[i] = 2, n = floor(n/10) = 1, i = i + 1,此时 i=7;
- n MOD 10 = 1, a[i] = 1, n = floor(n/10) = 0, i = i + 1,此时 i=8。
到这里,n 已经等于0了,已经完成了数字分解任务。通过上述分析可以发现,循环结束的条件就是临时变量 n = 0。通过把一些多次循环中不变的操作整合到循环里面,这样流程图的核心就有了,下面直接给出流程图。
3. 流程图
因为此篇博客仅介绍数字分解任务,为后续博客奠定基础,所以只列举数字分解任务的流程图,以免影响阅读和理解。
4. 测试结果
num = 1234567,通过左边的变量栏,可以发现已经成功把数字的各个位数存储到数组中去了。数字的位数可以通过 length_of(a) 来获取,本例中 num = 1234567,所以 length_of(a) = 7。
Raptor-数字分解相关推荐
- 汇编语言练习_1_数字分解_显示
文章目录 环境 1.Bochs虚拟机 2.VirtualBox 工具 1.notepad++ 2.nasm 思路 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 第七步: 解析 1.第二行 ...
- 数字分解的套路与陷阱
我发现这个数字分解,在各种题目之中屡屡出现,于是就想着来写写这篇文章 数字分解呢,简单来说,就是把一个数的每一位给它分开,然后进行操作 有的同学(就是我 )一看这个东西啊,就说,诶,我们整个strin ...
- XDOJ综合题 数字分解排序
XDOJ - 数字分解排序 时间限制:1S 内存限制:1000Kb 问题描述: 输入一个9位以内的正整数n,按数值从高到低的顺序输出n的各位数字. 输入说明: 一个正整数n(0<n<100 ...
- python中如何将一个数字分解成一个列表
将数字分解成列表 问题如下 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中.举例:get_digits(12345) ==> [1, 2, 3, 4, 5] ...
- java运算符与数字分解,看完对java更加有信心了(主除以和取余的理解)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 运算符: 1.赋值运算符:= 2.算术运算符:+ ,- ,* (乘), / (除),%(取余),++(自增) ,--(自减) 3.关 ...
- 递归回溯--数字分解java代码
/* * 5.数字分解 * * 6 * 6 * 5+1 * 4+2 * 4+1+1 * 3+3 * 3+2+1 * 3+1+1+1 * 2+2+2 ...
- XDOJ 综合题 数字分解排序
标题 数字分解排序 类别 综合 时间限制 1S 内存限制 1000Kb 问题描述 输入一个9位以内的正整数n,按数值从高到低的顺序输出n的各位数字. 输入说明 ...
- 输入n(1-10之间数字),将数字分解显示,如6可以显示为6,5+1,4+2,4+1+1.....
输入n(1-10之间数字),将数字分解显示,如6可以显示为6,5+1,4+2,4+1+1..... #include <stdio.h> int c[10]; void fun(int n ...
- 招银网络科技笔试题:数字分解
之前都在leetcode刷题,有些文章直接保存到上面去了,这是今天做招银的测试题中的一个,先说一下题目的大概意思. 给定一个整数,要求输出关于这个整数的各种数字相加的组合: 1:0种 2:0种 3:3 ...
- 【算法设计与分析】将数字分解为n个数字之和
[例]数字6可分解为 6 5+1 4+2 4+1+1 3+3 3+2+1 3+1+1+1 2+2+2 2+2+1+1 2+1+1+1+1 1+1 ...
最新文章
- 条件分支结构c语言,决定分支的条件一般是什么表达?
- 机柜服务器选择学问大!
- 什么是REST?以及RESTful的实现(转)
- 非线性回归模型(part1)--神经网络
- 【康复训练】[国家集训队] calc【dp】【拉格朗日插值】
- Jquery操作DOM节点
- Ubuntu源码安装Tomcat7
- python画图代码大全-Python科学画图代码分享
- 不同发行版linux介绍
- Cannot modify header information的解决方法
- IOS快速集成下拉上拉刷新
- vue播放flv格式视频
- 一维卷积神经网络应用,二维卷积神经网络原理
- Qt的http下载的Demo
- 喷射计算机故障,电子燃油喷射系统常见故障
- c语言程序设计对称数,对称数 问题
- 技术水平真的很重要!技术详细介绍
- C++之sstream
- php后门检测工具,phpStudy后门如何检测和修复
- 12Cr2Mo1R(H)化学成分
热门文章
- 第四次计算革命孕育“数字经济体”
- Poland seeks to calm row with Germany over WWII war repa industrielle Kommunikation rations
- 固定资产管理系统能帮助企业做哪些工作?
- 近期微信登录10005报错,解决办法
- 多元函数概念和偏导数
- 关键词推广怎么做比较好?抖音宣传做关键词推广有哪些好的方法
- sqlplus之runstats
- 产品分析报告—Soul
- python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数
- 【python办公自动化(19)】利用python发送邮件(每天向邮箱发送一条定时新闻)