【国庆の礼物 之五】洛谷P1149 火柴棒等式
题目:
我们可以使用数组的形式,记录下每个数字所使用的火柴棒数字,然后进行循环的枚举。
1-10的火柴棒数量题目有给出,两位数及以上需要数位分离的计算。
#include<bits/stdc++.h>
using namespace std;
int num[20000]={6,2,5,5,4,5,6,3,7,6};
int n,ans;
//num[i]表示拼出i需要的火柴棒数量
int main(){
for(int i=10;i<20000;i++){
int temp=i;
while(temp>0){
num[i]+=num[temp%10];
temp/=10;
}
}
cin>>n;
for(int i=0;i<10000;i++){
for(int j=0;j<10000;j++){
int k=i+j;//10000+10000=20000,可能数组越界
if(num[i]+num[j]+4+num[k]==n){
ans++;
//printf("%d+%d=%d\n",i,j,k);
}
}
}
cout<<ans<<endl;
return 0;
}