#include <stdio.h>
#include <math.h>
void printCombs(const char* prefix, int n) {
int i, j, limit = ceil(sqrt(n));
for(i = 1; i < limit; i++) {
for(j = i; j < limit; j++) {
if(i*i + j*j == n) {
printf("%s%d,%d\n", prefix, i, j);
char buffer[1024];
sprintf(buffer, "%s%d,", prefix, j);
printCombs(buffer, i*i);
sprintf(buffer, "%s%d,", prefix, i);
printCombs(buffer, j*j);
}
}
}
}
int main() {
printCombs("", 1000);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgp2b2lkIHByaW50Q29tYnMoY29uc3QgY2hhciogcHJlZml4LCBpbnQgbikgewogICAgaW50IGksIGosIGxpbWl0ID0gY2VpbChzcXJ0KG4pKTsKICAgIGZvcihpID0gMTsgaSA8IGxpbWl0OyBpKyspIHsKICAgICAgICBmb3IoaiA9IGk7IGogPCBsaW1pdDsgaisrKSB7CiAgICAgICAgICAgIGlmKGkqaSArIGoqaiA9PSBuKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzJWQsJWRcbiIsIHByZWZpeCwgaSwgaik7CiAgICAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsxMDI0XTsKICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXMlZCwiLCBwcmVmaXgsIGopOwogICAgICAgICAgICAgICAgcHJpbnRDb21icyhidWZmZXIsIGkqaSk7CiAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVzJWQsIiwgcHJlZml4LCBpKTsKICAgICAgICAgICAgICAgIHByaW50Q29tYnMoYnVmZmVyLCBqKmopOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIHByaW50Q29tYnMoIiIsIDEwMDApOwoKICAgIHJldHVybiAwOwp9
10,30
30,6,8
10,18,24
18,26
18,10,24
18,24,6,8