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);
}
}
分享到:
相关推荐
《C语言实现21位花朵数的算法解析》 在编程竞赛中,有时会遇到一些特殊的题目,如“21位花朵数”。这个题目源于某次蓝点杯大赛,要求求解10个数字(0-9)的21次方的所有可能组合,并确保每个数字在组合中出现的次数...
Java快速查找21位花朵数示例代码 Java快速查找21位花朵数是一种基于Java语言的算法,旨在快速查找21位花朵数。这种算法通过使用BigInteger类和ArrayList类来实现快速查找。 知识点1:BigInteger类 BigInteger类是...
这篇PPT课件是针对一年级数学下册的内容,主要讲解了两位数减一位数和整十数的退位计算方法。教学目标旨在帮助学生在理解算理的基础上掌握口算技巧,提升他们的观察能力、口头表达能力和推理归纳能力,同时培养发散...
根据给定的信息,本文将详细解析“21位水仙花数JAVA代码”的知识点,包括其定义、实现原理以及代码解读。 ### 一、水仙花数简介 水仙花数是一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如...
2. **编程约束** - 题目要求在3分钟内解决N=21的花朵数问题,这需要一个高效算法,而不是简单的暴力遍历所有可能的21位数。这可能涉及到高精度计算和优化算法。 3. **C语言基础** - 给定的题目包含了几个C语言的...
5. **组合问题**:第7题和第15题,涉及花朵或其他物品的组合,要求最大化组合数量。 6. **整除与余数**:例如第13题和第38题,计算除法的商和余数。 7. **比例和比较**:第26题、第32题和第37题,涉及动物数量的比例...
例如,在例子中,7+21,7是个位数,21中的1也是个位数,这两个个位数相加等于28,因为超过10,所以个位向十位进位1,十位上的数不变,因此结果是28。 其次,对于两位数加整十数的情况,整十数上的数要与两位数的十...
7. **平均数计算**:第8题,要求计算平均每人折的花朵数和平均每个小组折的花朵数,涉及到平均数的计算方法。 8. **整除与余数性质**:第9题,702÷7的商末尾0的数量,需要学生理解被除数与除数的关系。 9. **中间...
1. 估一估与数一数:这部分旨在训练孩子的估算能力和实际计数能力,例如估测花朵的数量,然后进行实际的点数确认。 2. 数的读写:通过连线和填写数字的方式,学习60、84、42等数字的读写,同时理解个位和十位上的...
16. 应用题:解决实际问题,如花朵的分配,水果运输,药物的使用天数,销售金额和平均数的计算,以及捐款分配,这些都是将数学知识应用到实际场景中的例子。 通过这个测试题,学生不仅需要掌握除数是一位数的除法的...
10. **应用题**:实际生活中的数学问题,如分配花朵到花坛,分组活动,图书分配,读书计划,以及水果的平均分配,这些题目都需要运用到乘法和除法的知识。 总的来说,这份文档涵盖了两位数乘法的竖式计算及其在各种...
通过观察图片中的花朵数量,孩子需要能够准确地数出总数,并在没有全部展示的情况下进行估算。例如,图中有50朵花,孩子需要能够估测并圈出52朵花。 二、数的读写 此部分涉及数字的书写和读音。孩子们需要学会正确...
(2) 57除以一个最高位为3的五位数,商可能是一位数也可能为两位数,取决于五位数的大小,错误。 (3) 被除数的位数减去除数的位数不能确定商的位数,错误。 (4) 要求单价,确实需要知道总价和数量,正确。 (5) 此题是...
当两个小数的位数不同时,可以在较小数的末尾添加零以使位数对齐,然后进行加法运算,例如6.45 + 8.3 = 14.75。 - **小数减法**:类似地,减法中也可以先补零再运算,如8.3 - 6.45 = 1.85。 4. **小数加减法的注意...
通过这样的提问,帮助他们建立起整十数与个位数之间数量关系的理解。 整十数的加减法主要包含两个方面:一是理解整十数的组成,二是学习加减法的基本规则。例如,10+20的计算,可以解释为1个十加上2个十等于3个十,...
一个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...
正确的加法竖式方法是将相同位数的数字相加,个位数与个位数相加,十位数与十位数相加。如65+24应先算5+4=9,然后6+2=8,所以结果是89。 2. **比较大小**: 学生需要理解并运用“>”、“”或“=”来比较两个数值...
口算是基础,包括简单的两位数减一位数或整十数,如37-5、16-8等。通过口算训练学生的快速心算能力。竖式计算则进一步提升了难度,让学生理解减法的运算过程,例如84-40、98-80等。此外,习题中还引入了实际问题,如...
首先,对于2的倍数的特征,我们知道一个数如果能够被2整除,那么它的个位数必须是0、2、4、6或8。例如,60、75、150、582都能被2整除,因为它们的个位数分别是0、5、0和2,符合2的倍数特征。 接着,5的倍数的特征是...
4. **实际应用举例**:在公园门票的例子中,通过计算不同颜色花朵的数量,孩子们可以学习到如何将整十数相加。例如,红花10盆加上黄花20盆,就是1个十加上2个十,即30盆。同理,黄花20盆加上紫花30盆,就是2个十加上...