cometoj—C0066 [2008提高组-B]火柴棒等式
程序员文章站
2024-03-24 16:36:28
...
题目描述
给你 n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 0-9 的拼法如图所示:
注意:
加号与等号各自需要两根火柴棍
如果 A !=B,则 A+B=C 与 B+A=C 视为不同的等式(A、B、C≥0)
n 根火柴棍必须全部用上
输入描述
共一行,有一个整数)n(n≤24)。
输出描述
共一行,表示能拼成的不同等式的数目。
样例输入 1
14
样例输出 1
2
样例输入 2
18
样例输出 2
9
提示
【输入输出样例1解释】
2 个等式为 0+1=1 和 1+0=1。
【输入输出样例2解释】
9个等式为:
0+4=4
0+11=11
1+10=11
2+2=4
2+7=9
4+0=4
7+2=9
10+1=11
11+0=11
思路:
本题给出提示最多给出24根火柴棒,减去加号等号后最多有20根,and其中拼出1的火柴所需是最少的,所以我们最多可以拼出1111+11=1111,所以A和B的极限值我们认定为1111(可以更小),进行枚举即可获得答案,代码如下:
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner read = new Scanner(System.in);
int n = read.nextInt()-4;//扣除加号和等号的火柴
int[] a = {6,2,5,5,4,5,6,3,7,6};
int answer = 0;
for(int i=0;i<=1111;i++)
for(int j=0;j<=1111;j++)
{
int sum = 0;//判断这个数字要用多少火柴
int c = i+j;
String str = i+""+j+""+c;
for(int k=0;k<str.length();k++)
{
sum += a[Integer.valueOf(String.valueOf(str.charAt(k)))];
}
if(sum == n)
{
answer += 1;
}
}
System.out.println(answer);
read.close();
}
}
上一篇: 通用简写表 博客分类: Standard 编名规范缩写简写英文缩写
下一篇: Lombok插件