博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
取某个数字的各个位数字
阅读量:6510 次
发布时间:2019-06-24

本文共 985 字,大约阅读时间需要 3 分钟。

目录

输出一个十进制位的各个数字

int a = 123;printf("%d %d %d",a/100,a/10%10,a%10);

拓展到更一般的情况,一个十进制数字的每一位应该是

$$
\frac a{10^n} %10 ,除以当前位的权重
$$

如果是K进制,则应该是:

$$
\frac a{K^n} %K ,除以当前位的权重
$$

变种问题:进制不统一

题目意思大致为,有一种货币,29个Knut等于1个Sickle,1个Sickle等于17个Galleon,如何将Kunt向上转化为其他单位

int a = 123;printf("%d %d %d",a/(29*17),a/17%29,a/29);

该三位数的权重分别是**29*17,29,1**,所以:

printf("%d %d %d",a/(29*17),a/29%17,a%29);

第一位不用再%29因为其上再没有别的单位

变种问题:取一个数任意连续几位

取12345678中的12,345,678

思路大致是这样的:可将原数字每三位划分,(12)(345)(678),每个括号内等同于一位,该数的进制即为1000,根据前面的原理,可以写出:

printf("%d %d %d",a/1000000,a/1000%1000,a%1000);

因此,例如下面的问题,就有了更简单的解

#include 
#include
int main(){ int a,b; scanf("%d %d",&a,&b); int c = a + b; if(c < 0){ printf("-"); c *= -1; } if(c >= 1000000){ printf("%d,%03d,%03d",c/1000000,c/1000%1000,c%1000); }else if(c >= 1000){ printf("%d,%03d",c/1000,c % 1000); }else{ printf("%d",c); }}

转载于:https://www.cnblogs.com/amojury/p/9001230.html

你可能感兴趣的文章
你必须知道的.net学习总结
查看>>
Axure8.0 网页 or App 鼠标滚动效果
查看>>
大家好,新年快乐。
查看>>
labview如何弹出提示窗口_LabVIEW开发者必读的问答汇总,搞定疑难杂症全靠它了!...
查看>>
mysql批量数据多次查询数据库_mysql数据库批量操作
查看>>
jquery 乱码 传参_jquery获取URL中参数解决中文乱码问题的两种方法
查看>>
JDBC_MySQL_jdbc连接mysql_MySQL
查看>>
java ftpclient 代码_java后台代码ftpclient下载文件
查看>>
linux不能访问80端口,lunux开放80端口(本地访问不了linux文件可能是这个原因)...
查看>>
android单位转换小程序,微信小程序中rpx与rem单位转换
查看>>
ps切图教程 android,PS前端切图完整教程
查看>>
HTML如何把输入框变成必填值,required输入框为必填项
查看>>
背锅侠逆袭之路
查看>>
演示:使用协议分析器取证IPv6的报文结构
查看>>
oracle 11gr2 rac中的4种IP解说
查看>>
为什么你找不到工作?
查看>>
汇编语言的应用
查看>>
device platform 相应的表
查看>>
php des 加密解密实例
查看>>
【Mac】Mac键盘实现Home, End, Page UP, Page DOWN
查看>>