洛谷P1149 火柴棒等式

思维

在这里插入图片描述
在这里插入图片描述
思路
由于最多一共24根火柴,单个数字最大不大于1000,相加最大不超过2000。所以第一步先求出0到2000每个数字所要用的火柴数。第二步用两层for循环满足b[i]+b[j]+b[i+j]==n-4,即为所求。
AC CODE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<bits/stdc++.h>
using namespace std;
int n,a[100],b[10000],ans=0;
int main()
{
cin>>n;
a[0]=6;a[1]=2;a[2]=5;a[3]=5;a[4]=4;
a[5]=5;a[6]=6;a[7]=3;a[8]=7;a[9]=6;
b[0]=6;
for(int i=1;i<=2000;i++)
{
int j=i;
while(j)
{
b[i]=b[i]+a[j%10];
j=j/10;
}
}
for(int i=0;i<=1000;i++)
{
for(int j=0;j<=1000;j++)
{
if(b[i]+b[j]+b[i+j]==n-4) ans++;
}
}
printf("%d\n",ans);
return 0;
}
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2020 Super Monkey
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信