#include <stdio.h>
/*
問題: A^X + B^Y = 2017 を満たすA,X,B,Yを求めよ。ただし、A,X,B,Yは2以上の自然数とする
解答: 右辺は素数であり、かつ奇数であるから左辺も奇数でなければならない。
したがって、A^X と B^Y の偶奇性は一致してはならない。さもなくば、左辺=偶数となり等号が成立しない。
いま、A^Xが偶数^Xの形で表されると仮定する。このとき、B^Yは奇数^Yの形でなければならない。
A,B,X,Yは2以上の自然数であるから、A^Xの取り得る値の範囲は
2^2 <= A^X <= 44^2 = 1936 < 2017
一方、B^Yの取り得る値の範囲は 3^2 <= B^Y <= 43^2 = 1849 < 2017
となる。
A^Xが奇数^X、B^Yが偶数^Yの形で表されるときも上と同様である。
以上のことから、上記の範囲において候補となる解を探索すればよい
*/
int main(void) {
// your code goes here
int n = 2017;
int a,b,x,y;
int s = 1,t = 1;
int i,j;
for(a = 2;a <= 44;++a)
{
for(b = 3;b <= 43;++b)
{
for(x = 2;;++x)
{
for(i = 0,s = 1;i < x;++i) s *= a;
if (s > n) break;
for(y = 2;;++y)
{
for(j = 0,t = 1;j < y;++j) t *= b;
if (t > n) break;
if ((s + t) == n)
printf("%d^%d + %d^%d = %d\n",a
,x
,b
,y
,n
); }
}
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKgrllY/poYzvvJogQV5YICsgQl5ZID0gMjAxNyDjgpLmuoDjgZ/jgZlBLFgsQixZ44KS5rGC44KB44KI44CC44Gf44Gg44GX44CBQSxYLEIsWeOBrzLku6XkuIrjga7oh6rnhLbmlbDjgajjgZnjgosKCuino+etlO+8miDlj7Povrrjga/ntKDmlbDjgafjgYLjgorjgIHjgYvjgaTlpYfmlbDjgafjgYLjgovjgYvjgonlt6bovrrjgoLlpYfmlbDjgafjgarjgZHjgozjgbDjgarjgonjgarjgYTjgIIK44GX44Gf44GM44Gj44Gm44CBQV5YIOOBqCBCXlkg44Gu5YG25aWH5oCn44Gv5LiA6Ie044GX44Gm44Gv44Gq44KJ44Gq44GE44CC44GV44KC44Gq44GP44Gw44CB5bem6L66PeWBtuaVsOOBqOOBquOCiuetieWPt+OBjOaIkOeri+OBl+OBquOBhOOAggrjgYTjgb7jgIFBXljjgYzlgbbmlbBeWOOBruW9ouOBp+ihqOOBleOCjOOCi+OBqOS7ruWumuOBmeOCi+OAguOBk+OBruOBqOOBjeOAgUJeWeOBr+Wlh+aVsF5Z44Gu5b2i44Gn44Gq44GR44KM44Gw44Gq44KJ44Gq44GE44CCCkEsQixYLFnjga8y5Lul5LiK44Gu6Ieq54S25pWw44Gn44GC44KL44GL44KJ44CBQV5Y44Gu5Y+W44KK5b6X44KL5YCk44Gu56+E5Zuy44GvCjJeMiA8PSBBXlggPD0gNDReMiA9IDE5MzYgPCAyMDE3CuS4gOaWueOAgUJeWeOBruWPluOCiuW+l+OCi+WApOOBruevhOWbsuOBryAzXjIgPD0gQl5ZIDw9IDQzXjIgPSAxODQ5IDwgMjAxNwrjgajjgarjgovjgIIKQV5Y44GM5aWH5pWwXljjgIFCXlnjgYzlgbbmlbBeWeOBruW9ouOBp+ihqOOBleOCjOOCi+OBqOOBjeOCguS4iuOBqOWQjOanmOOBp+OBguOCi+OAggrku6XkuIrjga7jgZPjgajjgYvjgonjgIHkuIroqJjjga7nr4Tlm7LjgavjgYrjgYTjgablgJnoo5zjgajjgarjgovop6PjgpLmjqLntKLjgZnjgozjgbDjgojjgYQKKi8KCmludCBtYWluKHZvaWQpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBuID0gMjAxNzsKCWludCBhLGIseCx5OwoJaW50IHMgPSAxLHQgPSAxOwoJaW50IGksajsKCWZvcihhID0gMjthIDw9IDQ0OysrYSkKCXsKCQlmb3IoYiA9IDM7YiA8PSA0MzsrK2IpCgkJewoJCQlmb3IoeCA9IDI7OysreCkKCQkJewoJCQkJZm9yKGkgPSAwLHMgPSAxO2kgPCB4OysraSkgcyAqPSBhOwoJCQkJaWYgKHMgPiBuKSBicmVhazsKCQkJCWZvcih5ID0gMjs7Kyt5KQoJCQkJewoJCQkJCWZvcihqID0gMCx0ID0gMTtqIDwgeTsrK2opIHQgKj0gYjsKCQkJCQlpZiAodCA+IG4pIGJyZWFrOwoJCQkJCWlmICgocyArIHQpID09IG4pCgkJCQkJCXByaW50ZigiJWReJWQgKyAlZF4lZCA9ICVkXG4iLGEseCxiLHksbik7CgkJCQl9CgkJCX0KCQl9Cgl9CglyZXR1cm4gMDsKfQo=