火柴棒等式-题解
2026-07-08 13:47:17
发布于:浙江
1阅读
0回复
0点赞
注1:我在育才信奥老师指点之下AC的(
注2:这道题思路比较两极分化,我写的是dfs代码,如果想看打表去翻翻别的
这是本蒟蒻第一次写难题题解哦,写的不好请见谅~
正式题解看下面
1.题意分析
题目很简单,就不分析了(
2.本题大坑
有人看到"利用 根火柴棒”这句话就马上开始了程序编写,将 拆分,但是如果这样想,就掉坑里了,盲目拆分一定一定会TLE,这样解不可行。
3.正解思路
我们将 拆分成两个数之和,每个数的循环终点定大一些(例如1000或者900),用dfs计算摆出这个数需要几根火柴棒之后相加即可。
附上代码:
#include<bits/stdc++.h>
using namespace std;
int a[100001]={6,2,5,5,4,5,6,3,7,6};
int n,cnt;
int dfs(int x) {
if(a[x]) {
return a[x];
}
a[x]=dfs(x/10)+a[x%10];
return a[x];
}
int ans;
int main() {
cin>>n;
n-=4;
for(int i=0;i<=1000;i++) {
for(int j=0;j<=1000;j++) {
int c=i+j;
if(dfs(i)+dfs(j)+dfs(c)==n) {
ans++;
}
}
}
cout<<ans;
return 0;
}
看到这里了,点个赞吧~
这里空空如也



有帮助,赞一个