P1016 [NOIP2008T2]火柴棒等式 - Smart Online Judge
不罗嗦,简单暴力枚举,由于输入规模比较小,希望能有更好的算法。
题目ID:1016
题目名称:[NOIP2008T2]火柴棒等式
有效耗时:932 ms
空间消耗:1872 KB
程序代码:
1 import java.util.Scanner; 2 3 4 public class Main { 5 static int[] a={6,2,5,5,4,5,6,3,7,6,2,2}; 6 7 static int getsum(int n){ 8 int sum=0; 9 for(int i=0;i<1000;i++) 10 for(int j=0;j<1000;j++){ 11 int b=i+j; 12 if(getstick(i)+getstick(j)+getstick(b)+4==n){ 13 sum++; 14 // System.out.println(i+"+"+j+"="+b); 15 } 16 } 17 return sum; 18 } 19 20 /** 21 * 获得某个数字需要多少根火柴 22 * @param i 23 * @return 24 */ 25 static int getstick(int i){ 26 if(i==0) 27 return a[0]; 28 int sum=0; 29 while(i>0){ 30 sum+=a[i%10]; 31 i=i/10; 32 } 33 return sum; 34 } 35 36 37 /** 38 * @param args 39 */ 40 public static void main(String[] args) { 41 // TODO Auto-generated method stub 42 Main main=new Main(); 43 Scanner sc=new Scanner(System.in); 44 int a=sc.nextInt(); 45 System.out.println(getsum(a)); 46 47 48 } 49 50 }
题目描述
给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
注意:
1. 加号与等号各自需要两根火柴棍
2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)
3. n根火柴棍必须全部用上
输入格式
共一行,又一个整数n(n<=24)。
输出格式
共一行,表示能拼成的不同等式的数目。
样例输入
样例一: 14 样例二: 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