寒假作業
現在小學的數學題目也不是那麼好玩的。
看看這個寒假作業:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
(如果顯示不出來,可以參見【圖1.jpg】)
每個方塊代表1~13中的某一個數字,但不能重複。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
就算兩種解法。(加法,乘法交換律後算不同的方案)
你一共找到了多少種方案?
請填寫表示方案數目的整數。
注意:你提交的應該是一個整數,不要填寫任何多餘的內容或說明性文字。
#include <stdio.h>
int num[4][3];
int vis[14],sum;
void dfs(int step){
int x=step/3;
int y=step%3;
if(step==12){
if(num[3][1]!=0&&num[3][0]%num[3][1]==0&&num[3][0]/num[3][1]==num[3][2]){
// for(int i=0;i<4;i++){
//
// for(int j=0;j<3;j++){
//
// printf("%d ",num[i][j]);
// }
// printf("\n");
// }
sum++;
//printf("\n");
}
return ;
}
else if(step==3){
if(num[0][0]+num[0][1]!=num[0][2])
return ;
}
else if(step==6){
if(num[1][0]-num[1][1]!=num[1][2])
return ;
}
else if(step==9){
if(num[2][0]*num[2][1]!=num[2][2])
return ;
}
for(int i=1;i<=13;i++){
if(!vis[i]){
num[x][y]=i;
vis[i]=1;
dfs(step+1);
vis[i]=0;
}
}
}
int main()
{
sum=0;
dfs(0);
printf("%d\n",sum);
return 0;
}