Wersen 题解分享 · 2024/4/12
三羊献瑞(结果填空) - 题解
``` `` #include <bits/stdc++.h> using namespace std; /* arr[0] arr[1] arr[2] arr[3] + arr[4] arr[5] arr[6] arr[1] arr[4] arr[5] arr[2] arr[1] arr[7] */ int arr[10] = {0,1,2,3,4,5,6,7,8,9}; int cal(int a, int b, int c, int d){ return a*1000+b*100+c*10+d; } int main(){ while(next_permutation(arr, arr+10)){ //全排列 if(arr[4]!=1) continue; if(arr[0]!=0){ if(cal(arr[0], arr[1], arr[2], arr[3]) + cal(arr[4], arr[5], arr[6], arr[1]) == arr[4]*10000 + cal(arr[5], arr[2], arr[1], arr[7])){ cout<< arr[4]<<arr[5]<<arr[6]<<arr[1]; break; } } } return 0; } ``` ``
查看全文
0 0 0 4
acmer10 题解分享 · 2024/4/4
三羊献瑞(结果填空) - 题解
``` #include<iostream> #include<cstring> #include<algorithm> using namespace std; int path[10]; int change(int a,int b,int c,int d) { return a*1000+b*100+c*10+d; } bool check(int a,int b,int c,int d,int e,int f,int g,int h) { if(change(e,d,f,g)+change(a,b,c,d)==a*10000+change(b,f,d,h))return true; return false; } bool vis[10]; void dfs(int u){ if(u==8) { if(check(path[0],path[1],path[2],path[3],path[4],path[5],path[6],path[7])) { int t=change(path[0],path[1],path[2],path[3]); int cnt=0; while(t) { t/=10; cnt++; } if(cnt==4)cout<<change(path[0],path[1],path[2],path[3])<<endl; return ; } return ; } for(int i=0;i<=9;i++) { if(!vis[i]) { path[u]=i; vis[i]=true; dfs(u+1); vis[i]=false; } } } int main() { dfs(0); return 0; } ```
查看全文
0 0 0 1