1. 程式人生 > >練習題:馬虎的算式 兩個error

練習題:馬虎的算式 兩個error

oid 不同的 gpo log 結果 == clas 兩個 一次

題目描述:
小明是個急性子,上小學的時候經常把老師寫在黑板上的題目抄錯了。

有一次,老師出的題目是:36 x 495 = ?

他卻給抄成了:396 x 45 = ?

但結果卻很戲劇性,他的答案竟然是對的!!

因為 36 * 495 = 396 * 45 = 17820

類似這樣的巧合情況可能還有很多,比如:27 * 594 = 297 * 54

假設 a b c d e 代表1~9不同的5個數字(註意是各不相同的數字,且不含0)

能滿足形如: ab * cde = adb * ce 這樣的算式一共有多少種呢?

請你利用計算機的優勢尋找所有的可能,並回答不同算式的種類數。

滿足乘法交換律的算式計為不同的種類,所以答案肯定是個偶數。

代碼如下:

程序代碼: #include<stdio.h>
const int N = 9;
int num;

void (int *p,int idx)
{
int t;
if(idx == 5)
{
if((p[0]*10 + p[1])*(p[2]*100 + p[3]*10 + p[4]) == (p[0]*100 + p[3]*10 + p[1])*(p[2]*10 + p[4]))
num++;
return;
}

for(int i = idx;i < N;i++)
{
t = p[i],p[i] = p[idx],p[idx] = t;
f(p,idx + 1
);
t = p[i],p[i] = p[idx],p[idx] = t;
}
}

int main()
{
int a[N];
for(int i = 0;i < N;i++)
a[i] = i+1;
f(a,0);
printf("%d\n",num);

return 0;
}

練習題:馬虎的算式 兩個error