80分求助,最后两组数据过不去!
查看原帖
80分求助,最后两组数据过不去!
1589690
Boning2014楼主2025/6/29 12:35
#include<bits/stdc++.h>
using namespace std;
int num[3],n,ans,x[10]={6,2,5,5,4,5,6,3,7,6};
int check(int number){
    if(number==0)return 6;
    int answer=0;
    while(number){
        answer+=x[number%10];
        number/=10;
    }
    return answer;
}
void dfs(int p,int len,int now){
    if(now+4>n){
        return;
    }
    if(p==3){
        if(now+4==n&&num[0]+num[1]==num[2]){
           if(check(num[0])+check(num[1])+check(num[2])+4==n){
               ans++;
           }
        }
        return;
    }
    for(int i=0;i<=9;i++){
        if(len>0&&num[p]==0){
            continue;
        }
        num[p]=num[p]*10+i;
        dfs(p,len+1,now+x[i]);
        num[p]/=10;
    }
    if(len>0){
        dfs(p+1,0,now);
    }
}
int main(){
    cin>>n;
    dfs(0,0,0);
    cout<<ans;
    return 0;
}
2025/6/29 12:35
加载中...