#include <math.h>
#include <stdio.h>
void printCombs2(int n, int k) {
for (int i = 1; i < limit; i++) {
for (int j = i; j < limit; j++) {
if (i*i + j*j == n) {
// printf("%d, %d, %d\n", i, j, k);
printf("%d, %d, %d ==> %d+%d+%d=%d\n", i
, j
, k
, i
*i
, j
*j
, k
*k
, i
*i
+j
*j
+k
*k
); }
}
}
}
void printCombs(int n) {
for (int i = 1; i < limit; i++) {
for (int j = i; j < limit; j++) {
if (i*i + j*j == n) {
// printf("%d, %d\n", i, j);
printf("%d, %d ==> %d+%d=%d\n", i
, j
, i
*i
, j
*j
, i
*i
+j
*j
); printCombs2(i*i, j);
printCombs2(j*j, i);
}
}
}
}
int main(void) {
printCombs(100);
printCombs(1000);
printCombs(10000);
return 0;
}
I2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHByaW50Q29tYnMyKGludCBuLCBpbnQgaykgewogICAgaW50IGxpbWl0ID0gY2VpbChzcXJ0KG4pKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbGltaXQ7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgbGltaXQ7IGorKykgewogICAgICAgICAgICBpZiAoaSppICsgaipqID09IG4pIHsKLy8gICAgICAgICAgICAgICAgcHJpbnRmKCIlZCwgJWQsICVkXG4iLCBpLCBqLCBrKTsKICAgICAgICAgICAgICAgIHByaW50ZigiJWQsICVkLCAlZCA9PT4gJWQrJWQrJWQ9JWRcbiIsIGksIGosIGssIGkqaSwgaipqLCBrKmssIGkqaStqKmorayprKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBwcmludENvbWJzKGludCBuKSB7CglwcmludGYoImNvbWJzKCVkKTpcbiIsIG4pOwogICAgaW50IGxpbWl0ID0gY2VpbChzcXJ0KG4pKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbGltaXQ7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgbGltaXQ7IGorKykgewogICAgICAgICAgICBpZiAoaSppICsgaipqID09IG4pIHsKLy8gICAgICAgICAgICAgICAgcHJpbnRmKCIlZCwgJWRcbiIsIGksIGopOwogICAgICAgICAgICAgICAgcHJpbnRmKCIlZCwgJWQgPT0+ICVkKyVkPSVkXG4iLCBpLCBqLCBpKmksIGoqaiwgaSppK2oqaik7CiAgICAgICAgICAgICAgICBwcmludENvbWJzMihpKmksIGopOwogICAgICAgICAgICAgICAgcHJpbnRDb21iczIoaipqLCBpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHB1dHMoIiIpOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBwcmludENvbWJzKDEwMCk7CiAgICBwcmludENvbWJzKDEwMDApOwogICAgcHJpbnRDb21icygxMDAwMCk7CgogICAgcmV0dXJuIDA7Cn0K
combs(100):
6, 8 ==> 36+64=100
combs(1000):
10, 30 ==> 100+900=1000
6, 8, 30 ==> 36+64+900=1000
18, 24, 10 ==> 324+576+100=1000
18, 26 ==> 324+676=1000
10, 24, 18 ==> 100+576+324=1000
combs(10000):
28, 96 ==> 784+9216=10000
60, 80 ==> 3600+6400=10000
36, 48, 80 ==> 1296+2304+6400=10000
48, 64, 60 ==> 2304+4096+3600=10000