问题:将输入的不超过pow(2,31)-1的整数以大写方式显示 例如:input:123456789 output:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖
这种问题还很能锻炼编程基本功,大家来分析一下思路,给出你比较精炼的实现
public class NumberConvertor { static final char NUMBER_CHAR[] = new char[] { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; static final char UNIT_CHAR[] = new char[] { '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟' }; public String convert(int number) { int remainingNumber = number; StringBuffer sb = new StringBuffer(); int pos = 0; int preDigit = -1; while (remainingNumber > 0) { int digit = remainingNumber % 10; if (isUnitToPrint(digit, preDigit, pos)) { sb.insert(0, UNIT_CHAR[pos - 1]); } if (isDigitToPrint(digit, preDigit, pos)) sb.insert(0, NUMBER_CHAR[digit]); pos++; preDigit = digit; remainingNumber = remainingNumber / 10; } return sb.toString(); } private boolean isDigitToPrint(int digit, int preDigit, int pos) { //个,万,亿的零不输出 if (digit == 0 && (pos == 0 || pos == 4 || pos == 8)) { return false; } //前后相邻,高位零不输出 if (digit == 0 && preDigit == 0) { return false; } return true; } private boolean isUnitToPrint(int digit, int preDigit, int pos) { //个位没有单位 if (pos == 0) { return false; } //万,亿必须输出 if (pos == 5 || pos == 9) { return true; } //零后不输出单位 if (digit == 0) { return false; } return true; } }
您还没有登录,请您登录后再发表评论
输入一个自然数n,求1~n之间的所有自然数之和。
写一个程序,对于给定的一个自然数N(1),和M个互不相同的十进制数字X1, X2,…,XM (M>=1), 找出N的一个最小的正倍数,使得该倍数中仅包含数字X1,X2,…,XM。 【输入形式】 输入文件为当前目录下的...
一题多解,包括很多noip原题的解法 ,希望大家能够采纳,这个资源其实很好的
题目1:设 n 为一自然数,n 可以分解成若干个不同的自然数的和,这样的分法有很多种,比如 n=10, 10 可以分解为:10=5+4+1; 10=5+3+2; 10+9+1; 10=8+2; 10=7+3; 10=6+4;10=7+2+1; 10=6+3+1;…。在所有这些分法中,各...
给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 ...
c++ 实现一个自然数表示成几个自然数的和,输出所有自然数和的表示方式
**自然数的拆分**指的是任何一个大于1的自然数\( N \),都可以被表示为若干个自然数之和,并且存在多种不同的拆分方式。例如,数字5可以被拆分为: - \( 5 = 1 + 1 + 1 + 1 + 1 \) - \( 5 = 1 + 1 + 1 + 2 \) - \( ...
C语言程序设计-求一个n位自然数的各位数字的积;(n 是小于10的自然数).c
输入一个自然数n,求 ,同时统计结果中有多少个0。
题目 1:给定一个自然数 N,0≤ N ≤ 4999和 M 各不同的十进制数字 X1,X2,……,XM, 找出由这些数字所构成的正整数中 N 的倍数最小的正整数,设该正整数不超过 2 32-1。 输入要求: 输入的第一行有两个整数,分别...
标题中的“输入一个自然数n,求 ,同时统计结果中有多少个0。”是一个关于计算阶乘(Factorial)的问题,并且需要我们同时计算阶乘结果中0的数量。在这个问题中,"n!"代表n的阶乘,即1×2×3×...×n。 阶乘是数学...
对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,以Fn表示。如F5为:0/1,1/5, 1/4, 1/3, 2/5, 1/2, 3/5,...
题目中给出的规则是这样的:输入一个自然数n(n≤1000),对于这个数,我们可以选择不进行任何处理,或者在其左边加上一个小于等于原数一半的自然数,然后重复这一过程。我们需要找出所有满足这样规则的数,并计算...
属于课程实例,输出一个自然数的各项因子。
特别地,当整数n无法分解为若干互不相同的加数时,即自身视为单独的一个加数,比如输入2,问题(1)的解输出为2。 而如果整数n可以分解为若干互不相同的加数时,不考虑自身为单独加数的情况,比如4,问题(1)的解...
写一个程序,对于给定的一个自然数N(1),和M个互不相同的十进制数字X1, X2,…,XM (M>=1), 找出N的一个最小的正倍数,使得该倍数中仅包含数字X1,X2,…,XM。 【输入形式】 输入文件为当前目录下的multiple...
System.out.println("请输入一个自然数:"); // 获取用户输入的自然数 int number = scanner.nextInt(); // 判断是否为素数 if (isPrime(number)) { System.out.println(number + " 是素数"); } else { ...
2. 接下来n行:每行一个自然数。 #### 输出格式 对于每组输入,如果找到了x,则输出该自然数及其出现的次数;如果未找到,则输出NO。 #### 样例输入输出 ``` 样例输入: 8 100 2 4 2 4 5 100 2 100 8 3 2 4 2 4 5 ...
编写一个程序。要求将一个自然数拆分成任意个自然数相加,要求这几个数的乘积是最大的 自然数n拆分成m个自然数,要求这几个数的乘积是最大的,必为n/m及其临近数.
相关推荐
输入一个自然数n,求1~n之间的所有自然数之和。
写一个程序,对于给定的一个自然数N(1),和M个互不相同的十进制数字X1, X2,…,XM (M>=1), 找出N的一个最小的正倍数,使得该倍数中仅包含数字X1,X2,…,XM。 【输入形式】 输入文件为当前目录下的...
一题多解,包括很多noip原题的解法 ,希望大家能够采纳,这个资源其实很好的
题目1:设 n 为一自然数,n 可以分解成若干个不同的自然数的和,这样的分法有很多种,比如 n=10, 10 可以分解为:10=5+4+1; 10=5+3+2; 10+9+1; 10=8+2; 10=7+3; 10=6+4;10=7+2+1; 10=6+3+1;…。在所有这些分法中,各...
给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。 (1) n∈set(n); (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; (3) 按此规则进行处理,直到不能再添加自然数为止。 ...
c++ 实现一个自然数表示成几个自然数的和,输出所有自然数和的表示方式
**自然数的拆分**指的是任何一个大于1的自然数\( N \),都可以被表示为若干个自然数之和,并且存在多种不同的拆分方式。例如,数字5可以被拆分为: - \( 5 = 1 + 1 + 1 + 1 + 1 \) - \( 5 = 1 + 1 + 1 + 2 \) - \( ...
C语言程序设计-求一个n位自然数的各位数字的积;(n 是小于10的自然数).c
输入一个自然数n,求 ,同时统计结果中有多少个0。
题目 1:给定一个自然数 N,0≤ N ≤ 4999和 M 各不同的十进制数字 X1,X2,……,XM, 找出由这些数字所构成的正整数中 N 的倍数最小的正整数,设该正整数不超过 2 32-1。 输入要求: 输入的第一行有两个整数,分别...
标题中的“输入一个自然数n,求 ,同时统计结果中有多少个0。”是一个关于计算阶乘(Factorial)的问题,并且需要我们同时计算阶乘结果中0的数量。在这个问题中,"n!"代表n的阶乘,即1×2×3×...×n。 阶乘是数学...
对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,以Fn表示。如F5为:0/1,1/5, 1/4, 1/3, 2/5, 1/2, 3/5,...
题目中给出的规则是这样的:输入一个自然数n(n≤1000),对于这个数,我们可以选择不进行任何处理,或者在其左边加上一个小于等于原数一半的自然数,然后重复这一过程。我们需要找出所有满足这样规则的数,并计算...
属于课程实例,输出一个自然数的各项因子。
特别地,当整数n无法分解为若干互不相同的加数时,即自身视为单独的一个加数,比如输入2,问题(1)的解输出为2。 而如果整数n可以分解为若干互不相同的加数时,不考虑自身为单独加数的情况,比如4,问题(1)的解...
写一个程序,对于给定的一个自然数N(1),和M个互不相同的十进制数字X1, X2,…,XM (M>=1), 找出N的一个最小的正倍数,使得该倍数中仅包含数字X1,X2,…,XM。 【输入形式】 输入文件为当前目录下的multiple...
System.out.println("请输入一个自然数:"); // 获取用户输入的自然数 int number = scanner.nextInt(); // 判断是否为素数 if (isPrime(number)) { System.out.println(number + " 是素数"); } else { ...
2. 接下来n行:每行一个自然数。 #### 输出格式 对于每组输入,如果找到了x,则输出该自然数及其出现的次数;如果未找到,则输出NO。 #### 样例输入输出 ``` 样例输入: 8 100 2 4 2 4 5 100 2 100 8 3 2 4 2 4 5 ...
编写一个程序。要求将一个自然数拆分成任意个自然数相加,要求这几个数的乘积是最大的 自然数n拆分成m个自然数,要求这几个数的乘积是最大的,必为n/m及其临近数.