问题描述如下:
“n!=n*(n-1)*...*2*1,求100!的各位数字之和。”
上代码:
/**
* n!
*
* @param n
* @return
*/
private static Long factorial(Long n) {
Long result = n;
for (Long i = n - 1; i > 1; i--) {
result *= i;
}
return result;
}
由于超出100!的范围,使用BigDecimal,代码如下:
/**
* n!
*
* @param n
* @return
*/
private static String factorial(Long n) {
BigDecimal result = new BigDecimal(n);
for (Long i = n - 1; i > 1; i--) {
result = result.multiply(new BigDecimal(i));
}
return result.toString();
}
求和:
/**
* 求n!的各位数字之和
* @param s
* @return
*/
private static int sum(String s){
int sum=0;
for (int i = 0; i < s.length(); i++) {
sum+= Integer.parseInt(s.charAt(i)+"");
}
return sum;
}
通过sum(factorial(100L))可以得到结果:648
请不吝赐教。
@anthor ClumsyBirdZ
分享到:
相关推荐
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10 100 。 输出格式: 在一行内输出 n...
70021 求矩阵各行元素之和 11 70022 矩阵运算 12 70023 九九乘法表 13 夏2周 14 70024 判断上三角矩阵 14 70025 算算看,这是第几天? 15 70026 找鞍点(选作) 16 70031 将字符串逆序存放 17 70032 查找字符 18 70033...
- 水仙花数(自幂数)的识别:通过三层嵌套循环遍历100-999之间的所有数,判断每个数是否等于其各位数字的立方和。 - 判断输入的数是否同时是5和7的倍数:通过条件语句检查输入数的特定特征。 - 成绩等级划分:...
- **描述**:对于一个3x3的二维数组,求其主对角线元素之和。 - **实现思路**: - 使用双重循环访问二维数组的每个元素。 - 当下标i等于j时,该元素为主对角线元素,累加到总和中。 #### 知识点三十:数组旋转 - ...
一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。编程找出所有符合条件的三位数。 注:1. 不能手算后直接打印结果。 2. “质数”即“素数”,是指除1和自身...
- **算法描述**:水仙花数是指一个三位数,其各位数字立方和等于该数本身。 - **编程实现**: - 通过`for`循环遍历100到999之间的每一个数。 - 对于每个数,使用整除和取余操作来分离出百位、十位和个位的数字。 ...
- **题目描述**:如果一个自然数的数字之积加上这些数字之和正好等于这个自然数,称这样的自然数为“巧数”,求100以内的所有巧数。 - **解题思路**: - 遍历1到99之间的所有自然数。 - 对每个数计算其各位数字的...
- **描述**:求1至20的所有整数的阶乘之和。 #### 【程序26】题目:利用递归方法求5! - **知识点**: - 递归函数 - 阶乘概念 - **描述**:使用递归函数计算5的阶乘。 #### 【程序27】利用递归函数调用方式,反向...
水仙花数的定义是三位数,其各位数字的立方和等于该数本身。为实现此功能,我们需要遍历 100 到 999,通过除以 100、10 和 1 来获取百位、十位和个位数字,并计算它们的立方和,然后进行比较。 5. **条件控制流**:...
- 求分数序列的前20项之和,如3 + 1/2 + 1/3 + ...,可以使用for循环逐步累加。 5. **for循环的执行次数**: - 第三个for循环的执行次数问题,通过分析条件表达式,可以判断循环执行的具体次数。 6. **程序段的...
5. 有一个分数列,2/1, 3/2, 5/3, 8/5, 13/8,求这个数列前20项之和。 这是一个基本的数学问题。使用for循环可以遍历数列的前20项,然后计算其和。 6. 用迭代法求X=根号A。 这是一个基本的数学问题。迭代法是一种...
输入一个正整数,输出原数并逆序打印出各位数字 - **知识点介绍**: - 递归函数:使用递归方法实现逆序输出数字。 - 数字操作:通过取模和除法操作来分离数字的每一位。 - **代码分析**: - 主函数中使用`...
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从...
DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从...
前20项之和? 11、计算圆周率 PI=4-4/3+4/5-4/7....... 打印出第一个大于 3.1415小于 3.1416的值 12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 16、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个...
**定义**:“水仙花数”指一个三位数,其各位数字立方和等于该数本身。 **解题思路**: - 遍历100至999之间的所有整数。 - 对每个数分解出百位、十位和个位,并计算它们的立方和。 - 如果立方和等于该数本身,则...
- **知识点**: 水仙花数是指一个三位数,其各位数字立方和等于该数本身(如153 = 1^3 + 5^3 + 3^3)。 - **实现方法**: - 遍历100到999之间的所有三位数。 - 对每个数进行分解,分别计算百位、十位、个位数字。 -...
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。程序通过遍历100到999的所有数,将每个数分解成百位、十位和个位,然后检查这三个数字的立方和是否等于原始数。如果是,就将其打印出来。 【程序 14】是...