首页 > 学院 > 开发设计 > 正文

火柴棒等式

2019-11-11 03:17:22
字体:
来源:转载
供稿:网友

题目描述

给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:

注意:

加号与等号各自需要两根火柴棍

如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)

n根火柴棍必须全部用上

var n,i,j,ans:longint; a:array[0..9]of longint=(6,2,5,5,4,5,6,3,7,6);function rem(n:longint):longint;var ls,i,c:longint; s:string;begin rem:=0;//一定要清零 str(n,s); ls:=length(s); for i:=1 to ls do  begin   c:=ord(s[i])-48;//分出每一位   rem:=a[c]+rem;//把每一位的火柴棒个数汇总  end;end;begin read(n); for i:=0 to 1000 do//之所以是一千,可以算。24减去符号剩下20.火柴棒用得最少是2根,A+B=C中只有A.B.C是数字,所以20要除于3,得3,因为有余数,所以加一位,就是4位,一千。本题数据小,不然不可以一个一个枚举。  for j:=0 to 1000 do//同上   if rem(i)+rem(j)+rem(i+j)=n-4 then inc(ans);  write(ans); end.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表