2016年藍橋杯C/C++組省賽第三題--湊算式

yellow日月空發表於2019-03-07

題目:湊算式

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


比如:
6+8/3+952/714 就是一種解法,
5+3/1+972/486 是另一種解法。
這個算式一共有多少種解法?

 

#include<iostream>
using namespace std;
int main()
{
	int count=0;
	for(int a=1;a<=9;a++){
		for(int b=1;b<=9;b++)
		{
			if(a==b) continue;	
			for(int c=1;c<=9;c++)
			{
				if(a==c || b==c) continue;
				for(int d=1;d<=9;d++)
				{
					if(a==d || b==d ||c==d) continue;
					for(int e=1;e<=9;e++)
					{
						if(e==a || e==b ||e==c||e==d) continue;
						for(int f=1;f<=9;f++)
						{
							if(a==f||b==f||c==f||d==f||e==f) continue;
							for(int g=1;g<=9;g++)
							{
								if(a==g||b==g||c==g||d==g||f==g||e==g) continue;
								for(int h=1;h<=9;h++)
								{
									if(a==h||b==h||c==h||d==h||e==h||f==h||g==h) continue;
									for(int i=1;i<=9;i++)
									{
										if(a==i||b==i||c==i||d==i||e==i||f==i||g==i||h==i) continue;
										if((a*c*(g*100+h*10+i))+(b*(g*100+h*10+i))+(c*(d*100+e*10+f))==(10*c*(g*100+h*10+i)))//這裡將等式的兩邊通分,注意乘的是c*(g*100+h*10+i)而不是 (c*1000+g*100+h*10+i)
											count++;
									}
								} 
							}	
						}
					}	
				}
				
			}
		}
	}
	cout<<count;
	return 0; 
} 

執行結果如下:

這裡沒有想到這麼多層的迴圈還能得出結果。

相關文章