6.凑算式

声明

可能本文章会有错误,希望各位读者看到后,记得回复留言,提醒我,以免误人子弟。本人菜鸡,还望各位大佬手下留情。

题目

凑算式

 B      DEF

A + --- + ------- = 10
C GHI

(如果显示有问题,可以参见【图1.jpg】)

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?

注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。


分析

这道题需要用到全排列,如果不太会的还是要去看下全排列。
将ABCDEFGHI全排列组合一边,然后选出满足条件的。
需要注意的是比较的位置,如果是int型,结果会自动取整


代码

public class f {
    //总共解法次数
    static int count = 0;
    public static void cou(int[] list) {
        //将结果比较,这里需要注意将后面的数转为double型,与double型的10.0比较
        double result = list[0] + 1.0*list[1]/list[2] + 1.0*(list[3]*100+list[4]*10+list[5])/(list[6]*100+list[7]*10+list[8]);
        if(result == 10.0)
            count++;
    }

    //这里全排列运用的递归
    //list:数组,begin:开始的位置,length:长度
    public static void fun(int[] list,int begin,int length) {
        //如果开始的位置等于数组长度,那么
        if(begin==length) {
            cou(list);
        }else {
            for(int i=begin;i<=length;i++) {
                //交换两个数
                swap(list,begin,i);
                //递归
                fun(list,begin+1,length);
                //再将两个数交换回来
                swap(list,begin,i);
            }
        }
    }

    //交换两个数函数
    public static void swap(int[] list,int a,int b) {
        int temp = list[a];
        list[a] = list[b];
        list[b] = temp;
    }

    public static void main(String[] args) {
        int[] list = {1,2,3,4,5,6,7,8,9};
        fun(list,0,list.length-1);
        System.out.println(count + "次");
    }
}

原文地址:https://www.cnblogs.com/drinkoo/p/8735447.html

时间: 2025-01-02 18:52:37

6.凑算式的相关文章

3.凑算式

题目内容: 凑算式 B      DEFA + --- + ------- = 10     C      GHI     (如果显示有问题,可以参见[图1.jpg])          这个算式中A~I代表0~9的数字,不同的字母代表不同的数字. 比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法. 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字. //*******************************

03凑算式(数字填空)

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法. 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字. //先给出答案:29 //有两种思路:1.暴力枚举(这里讲这个) 2.全排列(下次补上) //注意啦:第一:浮点数注意事项.要不就使分子*1.0,然后abs(等式左边-等式右边)<1E-10;要不就左右两边通分,使分式运算化成整式运算. //第二,关于&qu

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

第七届蓝桥杯本科B组省赛

煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), -. 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 思路: 推出第i层有i*(i+1)/2个煤球,累加到100层即可,答案为171700 #include <bits/stdc++.h> using namespace std; int main() {

2016年 蓝桥杯省赛(Java)

煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 171700 public class Main { public static void main(String[] args) { int ans = 0; for(int i = 1; i <=

第七届蓝桥杯C/C++B组省赛题目解析

题目1:煤球数目 有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 解析: 第一层:1个. 第二层:2*3-3=3个. 第三层:3*3-3=6个. 第四层:4*3-3=10个. 代码如下: int s=0,a=0; for(int i=1;i<=100;i++){ a=a+i;

第七届蓝桥杯C语言C组-(自己懂的题目)

第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球日报和我们地球的城市早报是一样的, 都是一些单独的纸张叠在一起而已.每张纸印有4版. 比如,某张报纸包含的4页是:5,6,11,12, 可以确定它应该是最上边的第2张报纸. 我们在太空中捡到了一张X星球的报纸,4个页码分别是: 1125,1126,1727,1728 请你计算这份报纸一共多少页(也就

第七届蓝桥杯大赛个人赛省赛(软件类)B组

3.凑算式 B      DEFA + --- + ------- = 10     C      GHI     (如果显示有问题,可以参见[图1.jpg])   这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法. 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字. 这道有点坑吧,尤其对于我这种看题不仔细的,看到题是想着"/"这个运算是整数的,

2016年蓝桥杯C/C++B组

第一次参加蓝桥杯,也是有很多感触的,时间完全不够写最后一题... 最后一题没做...还有全排序很重要... 1. 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), -. 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. /*答案:171700*/ #include <iostream> #include &l