题目类型:【数组】【转换思维】
题目来源:https://www.luogu.org/problemnew/show/P1149
思路:不用去想相等什么的,只要满足getN(i)+getN(j)+getN(i+j) + 4 == N就构建出了一个等式。
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int N,total;
int arr[] = {6,2,5,5,4,5,6,3,7,6};
int getN(int n);
int main(){
cin>>N;
for(int i = 0;i<=1000;i++){
for(int j = 0;j<=1000;j++){
if(getN(i)+getN(j)+getN(i+j) + 4 == N){ //不会出现两次i==j的,放心
total++;
}
}
}
cout<<total;
return 0;
}
int getN(int n){ //返回一个数需要多少根火柴
if(n ==0 ) return 6;
int coun = 0;
while(n){
coun+=arr[n%10];
n/=10;
}
return coun;
}