问题描述
【题目描述】
【输出】
题目解析
思路类比方格填数,全排列思想加check()检查。
C++代码
#include<bits/stdc++.h>
using namespace std;
int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
int ans = 0;
bool check()
{
if(a[0]+a[1]==a[2]&&
a[3]-a[4]==a[5]&&
a[6]*a[7]==a[8]&&
a[9]%a[10]==0&&
a[9]/a[10]==a[11])
return true;
return false;
}
void f(int k)
{
if(k==13)
{
if(check()) ans++;
}
for(int i=k;i<13;i++)
{
{
int t=a[i];
a[i] = a[k];
a[k] = t;
}
if((k==2&&a[0]+a[1]!=a[2])||(k==5&&a[3]-a[4]!=a[5])||(k==8&&a[6]*a[7]!=a[8]))
{
int t = a[i];
a[i] = a[k];
a[k] = t;
continue;
}
f(k+1);
{
int t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}
int main()
{
f(0);
cout<<ans<<endl;
return 0;
}