数位和
来源:互联网 发布:什么叫做元数据 编辑:程序博客网 时间:2024/04/28 10:24
前言
牛客网PAT乙级训练1018
题目描述
把一个整数的各位累加,NowCoder称它为“数位和”。例如正整数123456的数位和是1+2+3+4+5+6=21。现在,请你帮忙计算一个整数n在r进制下的数位和,并用相应的进制输出结果。
输入描述
输入有多组数据。
每组数据包含两个正整数n (1≤n≤2147483647)和r (2≤n≤16)。
输出描述
对应每一组数据,输出十进制正整数n转换成r进制后的数位和,并用r进制输出结果。
输入例子
123456 10
123456 2
输出例子
21
110
解析
题目其实不难,思路也很清晰,先转换成对应进制的数然后在十进制下求和,然后再转换成相应进制即可。
* 难点在于,当进制数超过10时,会出现字母,如何进行字母的运算。
以下方法可以解决:
10 + (ch - 'a');
遇到小写十六进制数转换成数字时用
比如0x0b应当对应十进制11
如果我拿到字符:’b’,将之转换成11的方法就是
‘b’-‘a’得到1,加10得到11,同理’f’-‘a’+10=15
解决方案
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int num = scanner.nextInt(); int n = scanner.nextInt(); String n_num = Integer.toString(num, n); int sum = 0; for (char ch : n_num.toCharArray()) { if (Character.isDigit(ch)) sum += ch - '0'; else sum += 10 + (ch - 'a'); //得到对应10进制下的数 } System.out.println(Integer.toString(sum, n).toUpperCase()); } }}
阅读全文
0 0
- 数位和
- 数位和
- 【PAT】数位和
- ADV-237-三进制数位和
- 算法提高 三进制数位和
- hihocoder1033-数位dp&数位求和&好题-交错和
- 数位和乘积(高精组合数学)
- 数位板的安装和使用
- 2014.9.13模拟赛【数位和乘积】
- 浮点数位模式和实体模式
- 数位DP 浅谈(hihocoder 1033:交错和)
- [数位dp] hihoCoder 1033 交错和
- hihocoder 1033 交错和 数位DP
- 聊一下和冠 Wacom数位板
- [数位DP] hihoCoder#1033 交错和
- 数位DP 浅谈(hihocoder 1033:交错和)
- 数位DP 浅谈(hihocoder 1033:交错和)
- LeetCode Add Digits(计算数位的和)
- 三级联动省市区城市选择器v2.1.0新版本发布
- 127.0.0.1和普通IP区别
- 树莓派时钟
- Unity 游戏框架搭建 (六) 关于框架的一些好文和一些思考
- ELK实时日志分析平台环境部署
- 数位和
- 解决ubuntu16.04系统各种紫屏黑屏
- 分卷压缩
- 并行目标分解实践
- setTimeout立即执行的情况
- 函数:显式具体化模板函数 引用结构
- 磁共振指纹压缩感知框架
- linux-----epoll
- 【智能合约】客户端和web端对智能合约的事件Event进行调用的代码示例