c++ 火柴棒等式

摘要:
题目描述给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?用火柴棍拼数字0-9的拼法如图所示:注意:1.加号与等号各自需要两根火柴棍2.如果A≠B,则A+B=C与B+A=C视为不同的等式3.n根火柴棍必须全部用上输入共一行,又一个整数n。样例输入14样例输出2SourceCode#includeusingnamespacestd;intnum[10001]={6,2,5,5,4,5,6,3,7,6};inta[4],n,tmp,ans;voiddfs{if{ifans++;return;}forif{a[step]=i;dfs;}}intmain(){cin˃˃n;n=n-4;for{tmp=i;while{num[i]+=num[tmp%10];tmp/=10;}}dfs(1,0);printf;return0;}

题目描述

给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
c++ 火柴棒等式第1张注意: 1. 加号与等号各自需要两根火柴棍 2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. n根火柴棍必须全部用上

输入

共一行,又一个整数n(n<=24)。

输出

共一行,表示能拼成的不同等式的数目。

样例输入

14

样例输出

2

Source Code

#include<bits/stdc++.h>
using namespace std;
int num[10001]={6,2,5,5,4,5,6,3,7,6};
int a[4],n,tmp,ans;
void dfs(int step,int sum)
{
    if(step == 3)
    {
        if(num[a[1] + a[2]] == n - sum) ans ++;
        return;
    }
    for(int i = 0;i <= 999;i ++)
        if(n - sum >= num[i])
        {
            a[step] = i;
            dfs(step + 1,sum + num[i]);
        }
}
int main()
{
    cin >> n;
    n = n - 4;
    for(int i = 10;i <= 9999;i ++)
    {
        tmp = i;
        while(tmp > 0)
        {
            num[i] += num[tmp % 10];
            tmp /= 10;
        }
    }
    dfs(1,0);
    printf("%d",ans);
    return 0;
}

免责声明:文章转载自《c++ 火柴棒等式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS 获取每月有几周(每周五到周四算作一周)Python之win32模块下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

codeforces 765 F Souvenirs 线段树+set

问题的含义:多个查询的间隔中两个数字之差的绝对值的最小值:可以根据查询的l对脱机查询进行排序,并且可以从r到l进行反向查询,并且间隔i+1到n的每次更新都可以确保此更新不会影响下一次和后续更新。因为当两个区间相互覆盖时,具有较小l的区间的值必须小于或等于另一个区间,因此可以绘制一个图来理解。...

java实现word转pdf文件(高效不失真)

importjava.io.File;importjava.io.FileOutputStream;importjava.io.InputStream;importorg.aspectj.weaver.ast.Test;importcom.aspose.words.Document;importcom.aspose.words.License;importc...

wifi密码暴力破解

转自:Python最新暴力破解WiFi,攻破所有密码限制,最强破解!...

微信小程序生成带参数的二维码(小程序码)独家asp.net的服务端c#完整代码

1) 我第一次使用wx。小程序端请求调用API,发现这是一个坑!@-_~Page:'pages/index/index',//在此处填写要跳转到的小程序页面。你不能在它前面添加/oh。发布后必须为1024页//小程序代码的边长,以像素为单位,范围[2801280]},标头:{'content-type':“application/json;charset=U...

如何设置Navicat的显示字体与字体大小?

方法/步骤打开Navicat点击菜单,再选择在界面,点击下的设置网格字体和大小设置编辑器字体和大小设置命令列界面字体和大小设置ER图表字体和大小,最后点击END...

Linux(debian7)操作基础(四)之CPU频率调整 Linux系统CPU频率调整工具使用

在Linux中,内核的开发人员定义了一组框架模型,以实现动态调整CPU频率的目的,这就是CPUFreq系统。交互式:交互式模式,直接连接到最高频率,然后CPU负载缓慢降低,导致相对较高的功耗。Interactive根据计划的CPU数量来调整频率,以节省电力。InteractiveX根据CPU负载调整CPU频率,而不会过度降低频率。用户空间:用户定义的模式。该...