`
1140566087
  • 浏览: 560779 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18587
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:314744
Group-logo
J2ME 基础学习课程集
浏览量:18848
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17612
社区版块
存档分类
最新评论

21位数的花朵数

ACM 
阅读更多
import java.math.BigInteger;


//花朵数
public class Flower {
	
	/*
	 *   先求出 0- 9 的 21 次方 ,用BigInteger 的数组进行保存
	 *   使用一个数组保存: 0- 9 在 21 位数中出现的次数
	 *   
	 *   使用递归,找到每个数出现次数的可能,找到一种结果计算一次; 看是否符合条件
	 * 
	 * */
	
	//每次求出 0-9 的 21 次方
	public static BigInteger p(int a){
		BigInteger base = BigInteger.ONE;
		for(int i=0;i<21;i++){
			base = base.multiply(BigInteger.valueOf(a));
		}
		return base;
	}
	
	//用于计算
	public static void ji_suan(BigInteger[] pwd,int[] nn){
		// 求和
		BigInteger sum = BigInteger.ZERO;
		for(int i=0;i<10;i++){
			sum=sum.add(pwd[i].multiply(BigInteger.valueOf(nn[i])));
		}
		
		String s=""+sum ;		//转换成字符
		
		if(s.length()!=21){
			return;
		}
		
		//确定和中各数字出现多少次
		int[] nn2 = new int[10];
		for(int i=0;i<21;i++){
			nn2[s.charAt(i)-'0']++;
		}
		
		//测试是否与nn[] 中个数数对应的位置数目相同
		for(int i=0;i<10;i++){
			if(nn[i] !=nn2[i]){
				return;
			}
		}
		
		//完全匹配打印结果
		System.out.println(s);
		
	}
	
	//递归  :判断每个数出现次数的可能
	public static void f(BigInteger[] pwd,int[] nn,int current,int use){
		
		if(current==9){		//前面的数都定下来了,那么 9 出现的次数
			nn[current]=21-use;
			ji_suan(pwd,nn);	//此时nn 里面保存的是此时的一种情况
			return;
		}
		
		for(int i=0;i<=21-use;i++){
			nn[current] = i;	//记录当前数出现的次数
			f(pwd,nn,current+1,use+i);
		}
	}
	
	public static void main(String[] args){
		// 0- 9 的 21 次方
		BigInteger[] pwd = {p(0),p(1),p(2),p(3),p(4),p(5),p(6),p(7),p(8),p(9)};
		// 0 - 9 出现的次数
		int[] nn = new int[10];
		f(pwd,nn,0,0);
		
	}
}
分享到:
评论

相关推荐

    21位花朵数

    《C语言实现21位花朵数的算法解析》 在编程竞赛中,有时会遇到一些特殊的题目,如“21位花朵数”。这个题目源于某次蓝点杯大赛,要求求解10个数字(0-9)的21次方的所有可能组合,并确保每个数字在组合中出现的次数...

    利用Java快速查找21位花朵数示例代码

    Java快速查找21位花朵数示例代码 Java快速查找21位花朵数是一种基于Java语言的算法,旨在快速查找21位花朵数。这种算法通过使用BigInteger类和ArrayList类来实现快速查找。 知识点1:BigInteger类 BigInteger类是...

    一年级数学下册两位数减一位数和整十数退位人教新课标PPT课件.pptx

    本文将详细解读一年级数学下册两位数减一位数和整十数退位人教新课标PPT课件的内容,揭示教学的重点和学习的要点。 首先,两位数减一位数和整十数的退位计算是学生进入数学运算领域后遇到的第一个挑战。例如,36...

    21位水仙花数JAVA代码

    根据给定的信息,本文将详细解析“21位水仙花数JAVA代码”的知识点,包括其定义、实现原理以及代码解读。 ### 一、水仙花数简介 水仙花数是一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如...

    2011国信南点杯C本科模拟题

    2. **编程约束** - 题目要求在3分钟内解决N=21的花朵数问题,这需要一个高效算法,而不是简单的暴力遍历所有可能的21位数。这可能涉及到高精度计算和优化算法。 3. **C语言基础** - 给定的题目包含了几个C语言的...

    一年级数学下册(两位数加一位数)进位加法11.ppt

    例如,在例子中,7+21,7是个位数,21中的1也是个位数,这两个个位数相加等于28,因为超过10,所以个位向十位进位1,十位上的数不变,因此结果是28。 其次,对于两位数加整十数的情况,整十数上的数要与两位数的十...

    人教版三年级下册数学第二单元测试卷( 除数是一位数的除法).docx

    7. **平均数计算**:第8题,要求计算平均每人折的花朵数和平均每个小组折的花朵数,涉及到平均数的计算方法。 8. **整除与余数性质**:第9题,702÷7的商末尾0的数量,需要学生理解被除数与除数的关系。 9. **中间...

    2016春三年级数学下册第2单元除数是一位数的除法测试题无答案新版新人教版.doc

    16. 应用题:解决实际问题,如花朵的分配,水果运输,药物的使用天数,销售金额和平均数的计算,以及捐款分配,这些都是将数学知识应用到实际场景中的例子。 通过这个测试题,学生不仅需要掌握除数是一位数的除法的...

    两位数乘两位数竖式计算.doc

    10. **应用题**:实际生活中的数学问题,如分配花朵到花坛,分组活动,图书分配,读书计划,以及水果的平均分配,这些题目都需要运用到乘法和除法的知识。 总的来说,这份文档涵盖了两位数乘法的竖式计算及其在各种...

    小学数学三年级(下册)第二单元练习题.doc

    (2) 57除以一个最高位为3的五位数,商可能是一位数也可能为两位数,取决于五位数的大小,错误。 (3) 被除数的位数减去除数的位数不能确定商的位数,错误。 (4) 要求单价,确实需要知道总价和数量,正确。 (5) 此题是...

    百以内的数和认识人民币.ppt

    紧接着,“数的组成与数序”部分的介绍,让孩子们了解到数字是由不同位数组成的。例如,数字68由6个十和8个一组成。这样的分解有助于孩子们理解每个数字的结构,进而掌握数序的概念。数轴的应用不仅加深了对数字前后...

    新人教四年级下册数学小数加减法例小数加减法例PPT学习教案.pptx

    当两个小数的位数不同时,可以在较小数的末尾添加零以使位数对齐,然后进行加法运算,例如6.45 + 8.3 = 14.75。 - **小数减法**:类似地,减法中也可以先补零再运算,如8.3 - 6.45 = 1.85。 4. **小数加减法的注意...

    小学一年级下册数学整十数加减整十数.pptx

    通过这样的提问,帮助他们建立起整十数与个位数之间数量关系的理解。 整十数的加减法主要包含两个方面:一是理解整十数的组成,二是学习加减法的基本规则。例如,10+20的计算,可以解释为1个十加上2个十等于3个十,...

    python求解水仙花数的方法

    一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。 #!/usr/bin/python def get_flower(n, ofile): D_pow=[pow(i,n) for i in range(0,10)] V_min=1*pow(10,n-1) V_max...

    人教小学数学下册整十数加减整十数PPT学习教案.pptx

    通过将个位数与十位数相结合的方式,如3个十加2个十等于50,能够进一步加深孩子对数的理解。 在孩子们对数的组成有了初步认识后,教师可以通过实例引入加法的概念。例如,通过“红花和黄花共有多少盆?”这样的问题...

    二年级数学上册 2.2两位数减两位数习题(无答案) 新人教版 试题.doc

    基础口算包括了两位数减一位数或整十数的简单计算,这是培养二年级学生快速心算能力的关键一步。例如,计算37减去5,或者16减去8,这类题目看似简单,实则是后续更复杂计算的基础。通过反复练习,学生能够迅速而准确...

    人教版五年级数学下册第二单元_2、5、3的倍数的特征练习课.ppt

    首先,对于2的倍数的特征,我们知道一个数如果能够被2整除,那么它的个位数必须是0、2、4、6或8。例如,60、75、150、582都能被2整除,因为它们的个位数分别是0、5、0和2,符合2的倍数特征。 接着,5的倍数的特征是...

    (中小学教育)一下整十数加、减整十数课件.ppt

    4. **实际应用举例**:在公园门票的例子中,通过计算不同颜色花朵的数量,孩子们可以学习到如何将整十数相加。例如,红花10盆加上黄花20盆,就是1个十加上2个十,即30盆。同理,黄花20盆加上紫花30盆,就是2个十加上...

    2、5、3的倍数的特征练习课.ppt

    在实际应用中,例如购买花朵的例子,如果知道每种花的价格和购买的数量,可以通过快速判断总价格是否能被特定数整除来验证找回的钱是否正确。例如,如果每枝马蹄莲10元,郁金香5元,总金额是50元,找回13元,我们...

Global site tag (gtag.js) - Google Analytics