1. 程式人生 > >第七屆藍橋杯大賽個人賽省賽(軟件類)B組

第七屆藍橋杯大賽個人賽省賽(軟件類)B組

string 問題 pan 圖1 http this 藍橋杯 不同 ogr

3.湊算式


B DEF
A + --- + ------- = 10
C GHI

(如果顯示有問題,可以參見【圖1.jpg】)

這個算式中A~I代表1~9的數字,不同的字母代表不同的數字。

比如:
6+8/3+952/714 就是一種解法,
5+3/1+972/486 是另一種解法。

這個算式一共有多少種解法?

技術分享

註意:你提交應該是個整數,不要填寫任何多余的內容或說明性文字。

這道有點坑吧,尤其對於我這種看題不仔細的,看到題是想著"/"這個運算是整數的,啪啪敲了代碼一算兩萬多,想著也沒毛病,可是答案說是29,找了半天看樣例時發現了這裏取商的值是小數......

#include <iostream>
#include 
<stdlib.h> #include <string.h> #include <math.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int vis[100]; int a[100], cnt; void DFS(int t) { if(t==9) { int f=1; for(int i=0; i<=8; i++) {
if(a[i]==0) f=0; } if(f==1&&fabs((1.0*a[0]+1.0*a[1]/a[2]+1.0*(a[3]*100+a[4]*10+a[5])/(a[6]*100+a[7]*10+a[8]))-10)<1e-10) { cnt++; } return; } for(int i=1; i<=9; i++) { if(!vis[i]) { a[t]=i; vis[i]
=1; DFS(t+1); vis[i]=0; a[t]=0; } } } int main(int argc, char** argv) { cnt=0; for(int i=1; i<=9; i++) { memset(vis, 0, sizeof(vis)); memset(a, 0, sizeof(a)); vis[i]=1; a[0]=i; DFS(1); } printf("%d\n", cnt); return 0; }

第七屆藍橋杯大賽個人賽省賽(軟件類)B組