【国庆の礼物 之五】洛谷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;
} 
posted @ 2021-10-03 10:24  计算机知识杂谈  阅读(73)  评论(0编辑  收藏  举报