2012ブルーブリッジカップC++本科古堡算式

1004 ワード


ホームズはある古い砦を探検して、ドアに奇妙な計算式が書いてあるのを見た.
    ABCDE * ? = EDCBA
彼は華生に対して言います:“ABCDEは異なる数字を代表するべきで、疑問符もある数字を代表します!”
華生:「そうだと思う!」
そこで、二人は長い間黙っていたが、適当な結果は出なかった.
コンピューターの利点を利用して、解読の答えを見つけてください.
ABCDEが表す数字を書き出します.
答え:21978
#include <iostream>
using namespace std;

int main()
{
	long long  a, b, c, d, e;
	long long s, i, j;
	for(i = 10000; i <= 99999; i++)
	for(j = 1; j <= 9; j++)
	{
		s = i * j;
		if(s > 100000)
			continue;
		a = i / 10000;
		b = (i - a * 10000)/1000;
		c = (i - a * 10000 - b * 1000)/100;
		d = (i - a * 10000 - b * 1000 - c * 100)/10;
		e = i - a * 10000 - b * 1000 - c * 100 - d * 10;
		if(e * 10000 + d * 1000 + c * 100 + b * 10 + a == s && a != b && a != c && a != d && a != e && b != c && b != d && b != e
			&& c != d && c != e && d != e)
			cout << a << b << c << d << e  << endl;
	}
	return 0;
}