题解分享
题解分享简介
三羊献瑞(结果填空) - 题解
```
``
#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
三羊献瑞(结果填空) - 题解
```
#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



