![在这里插入图片描述](https://img-blog.csdnimg.cn/20210310213437645.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29uaW9uMTk=,size_16,color_FFFFFF,t_70#pic_center)
题目解答
注意
- 如果十分混乱就全部算咯,算前1000个,把1-1000表示出来
- 0在这里比较特殊,没算进去,要特地改一下
AC代码如下:
using namespace std;
#include <iostream>
#include <cstring>
int k[10]={6,2,5,5,4,5,6,3,7,6};
int main ()
{
int i,j,n;
int sum=0;
cin>>n;
//求1000以内的数的火柴数
int a[1000];
for(i=0;i<1000;i++)
{
a[i]=0;
int t=i;
while(t!=0)
{
a[i]=a[i]+k[t%10];
t=t/10;
}
}
a[0]=6;//注意注意。。0未进入while
//计算是否符合
for(i=0;i<1000;i++)
{
for(j=i;j<1000;j++)
{
if(i+j<1000)
{
if(a[i]+a[j]+a[i+j]+4==n)
{
if(i==j){sum=sum+1;}
else{sum=sum+2;}
}
}
}
}
cout<<sum;
return 0;
}