`
zhou_zhihao
  • 浏览: 57995 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

问题20-求100!的各位数字之和

 
阅读更多

问题描述如下:

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

分享到:
评论

相关推荐

    1002 写出这个数 (20分).c

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10 ​100 ​​ 。 输出格式: 在一行内输出 n...

    浙江大学C语言上机练习题附答案

    70021 求矩阵各行元素之和 11 70022 矩阵运算 12 70023 九九乘法表 13 夏2周 14 70024 判断上三角矩阵 14 70025 算算看,这是第几天? 15 70026 找鞍点(选作) 16 70031 将字符串逆序存放 17 70032 查找字符 18 70033...

    编程算法练习--没事的时候练练

    - **描述**:对于一个3x3的二维数组,求其主对角线元素之和。 - **实现思路**: - 使用双重循环访问二维数组的每个元素。 - 当下标i等于j时,该元素为主对角线元素,累加到总和中。 #### 知识点三十:数组旋转 - ...

    C++编程练习题大全(带答案).pdf

    - 水仙花数(自幂数)的识别:通过三层嵌套循环遍历100-999之间的所有数,判断每个数是否等于其各位数字的立方和。 - 判断输入的数是否同时是5和7的倍数:通过条件语句检查输入数的特定特征。 - 成绩等级划分:...

    练习P20入门版答案

    一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。编程找出所有符合条件的三位数。 注:1. 不能手算后直接打印结果。 2. “质数”即“素数”,是指除1和自身...

    100个经典C语言算法

    - **算法描述**:水仙花数是指一个三位数,其各位数字立方和等于该数本身。 - **编程实现**: - 通过`for`循环遍历100到999之间的每一个数。 - 对于每个数,使用整除和取余操作来分离出百位、十位和个位的数字。 ...

    80道题让你成为编程高手pascal.doc

    - **题目描述**:如果一个自然数的数字之积加上这些数字之和正好等于这个自然数,称这样的自然数为“巧数”,求100以内的所有巧数。 - **解题思路**: - 遍历1到99之间的所有自然数。 - 对每个数计算其各位数字的...

    C程序源代码集[1].doc

    10. **打印水仙花数**:水仙花数是指一个三位数,其各位数字立方和等于该数本身。 11. **冒泡法和插入法排序**:冒泡排序通过不断交换相邻的逆序元素来实现升序;插入排序则通过将元素逐个插入到已排序部分来完成...

    100个经典例题(C语言).doc

    - **描述**:求1至20的所有整数的阶乘之和。 #### 【程序26】题目:利用递归方法求5! - **知识点**: - 递归函数 - 阶乘概念 - **描述**:使用递归函数计算5的阶乘。 #### 【程序27】利用递归函数调用方式,反向...

    高级语言程序设计20-21期中1

    水仙花数的定义是三位数,其各位数字的立方和等于该数本身。为实现此功能,我们需要遍历 100 到 999,通过除以 100、10 和 1 来获取百位、十位和个位数字,并计算它们的立方和,然后进行比较。 5. **条件控制流**:...

    学习情境三循环结构PPT学习教案.pptx

    - 求分数序列的前20项之和,如3 + 1/2 + 1/3 + ...,可以使用for循环逐步累加。 5. **for循环的执行次数**: - 第三个for循环的执行次数问题,通过分析条件表达式,可以判断循环执行的具体次数。 6. **程序段的...

    c语言考试必备!.pdf

    5. 有一个分数列,2/1, 3/2, 5/3, 8/5, 13/8,求这个数列前20项之和。 这是一个基本的数学问题。使用for循环可以遍历数列的前20项,然后计算其和。 6. 用迭代法求X=根号A。 这是一个基本的数学问题。迭代法是一种...

    C语言经典100例

    输入一个正整数,输出原数并逆序打印出各位数字 - **知识点介绍**: - 递归函数:使用递归方法实现逆序输出数字。 - 数字操作:通过取模和除法操作来分离数字的每一位。 - **代码分析**: - 主函数中使用`...

    DS18B20测温实验原理及实现

    DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从...

    PTA特立独行的幸福(C++版)

    对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100...

    数字温度计ds18b20的详细中文资料

    DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从...

    java经典小程序,java入门100例!.doc

    前20项之和? 11、计算圆周率 PI=4-4/3+4/5-4/7....... 打印出第一个大于 3.1415小于 3.1416的值 12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 16、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个...

    26道基础算法题.pdf

    **定义**:“水仙花数”指一个三位数,其各位数字立方和等于该数本身。 **解题思路**: - 遍历100至999之间的所有整数。 - 对每个数分解出百位、十位和个位,并计算它们的立方和。 - 如果立方和等于该数本身,则...

    100个c语言经典算法(学c语言必看的)

    - **水仙花数**是指一个三位数,其各位数字的立方和等于该数本身。 - 通过遍历100到999之间的所有数来寻找符合条件的水仙花数。 #### 示例代码解析 ```c main() { int i, j, k, n; printf("'Waterflower' number ...

    Java50道经典题目

    - **知识点**: 水仙花数是指一个三位数,其各位数字立方和等于该数本身(如153 = 1^3 + 5^3 + 3^3)。 - **实现方法**: - 遍历100到999之间的所有三位数。 - 对每个数进行分解,分别计算百位、十位、个位数字。 -...

Global site tag (gtag.js) - Google Analytics