#include #include // vector´Â ÀÏÁ¾ÀÇ listÀÔ´Ï´Ù. ¿ø¼Ò¸¦ µÚ¿¡ Ãß°¡ÇÏ´Â ÀÛ¾÷¿¡ ¿ëÀÌÇÕ´Ï´Ù. »ç¿ëÀ» arrayó·³ ÇÒ ¼ö ÀÖ½À´Ï´Ù. #include // abs(Àý´ñ°ª), max(ÃÖ´ñ°ª) µîÀÇ ÇÔ¼ö°¡ Æ÷ÇÔµÈ Çì´õÀÔ´Ï´Ù. typedef struct { int p[3]; } tiii; // tiii´Â 3°³ÀÇ intÇü º¯¼ö¸¦ ´ã°í ÀÖ´Â ÀÚ·áÇüÀ̸ç, º¤Å͸¦ ³ªÅ¸³À´Ï´Ù. using namespace std; // vector, abs, max µîÀÇ ¾Õ¿¡ std::¸¦ ºÙ¿©ÁÖ´Â ¿ªÇÒÀÔ´Ï´Ù. vector l[124], extd[124]; // l[n]°ú extd[n]Àº ±æÀÌ°¡ nÀÎ º¤Å͵éÀ» ¸ð¾Æ³õÀº listÀÔ´Ï´Ù. Áï, ¸®½ºÆ®°¡ 124°³ ÀÖ´Â °ÍÀÔ´Ï´Ù. void push(int N, int a[3]) { int i; tiii tmp; for (i = 0; i<3; i++) tmp.p[i] = a[i]; // a[i]¸¦ ¿ì¸®°¡ ´Ù·ç´Â ÇüÅÂÀÎ tiii·Î º¯È¯ÇÕ´Ï´Ù. extd[N].push_back(tmp); // extd[N].push_back(tmp)´Â, extd[N]À̶ó´Â listÀÇ ¸Ç µÚ¿¡ tmp¸¦ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. // ¿¹¸¦ µé¸é, extd[N]ÀÌ {v1, v2}¿´´Ù¸é, »õ·Î¿î extd[N]Àº {v1, v2, tmp}°¡ µË´Ï´Ù. // ÀÌ ºÎºÐÀº ¸ðµç ¼ººÐÀÌ 0 ÀÌ»óÀÎ º¤Å͸¦ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. if (a[0] == 0) { // ù ¹ø° ¿ø¼Ò°¡ 0ÀÎ °æ¿ì if (a[1]>0 && a[2]>0) { // (0,0,x)³ª (0,x,0)²ÃÀº ºÎÈ£¸¦ ¹Ù²Ù¸é Á¤È®È÷ ¹Ý´ëµÇ´Â º¤ÅÍÀ̹ǷΠ´õ Ãß°¡ÇÏÁö ¾Ê½À´Ï´Ù. tmp.p[2] = -tmp.p[2]; extd[N].push_back(tmp); // (0,x,y)¿Í (0,x,-y)¸¸ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. (0,-x,y)=-(0,x,-y)À̹ǷΠÃß°¡ÇÏÁö ¾Ê½À´Ï´Ù. } } else { if (a[1] == 0) { // ù ¹ø° ¿ø¼Ò°¡ 0ÀÌ ¾Æ´Ï°í µÎ ¹ø° ¿ø¼Ò°¡ 0ÀÎ °æ¿ì if (a[2]>0) { // (x,0,0)²ÃÀº ºÎÈ£¸¦ ¹Ù²Ù¸é Á¤È®È÷ ¹Ý´ëµÇ´Â º¤ÅÍÀ̹ǷΠ´õ Ãß°¡ÇÏÁö ¾Ê½À´Ï´Ù. tmp.p[2] = -tmp.p[2]; extd[N].push_back(tmp); // (x,0,y)¿Í (x,0,-y)¸¸ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. } } else { if (a[2] == 0) { // ¸¶Áö¸· ¿ø¼Ò¸¸ 0ÀÌ°í ³ª¸ÓÁö´Â 0ÀÌ ¾Æ´Ñ °æ¿ì tmp.p[1] = -tmp.p[1]; extd[N].push_back(tmp); // (x,y,0)¿Í (x,-y,0)¸¸ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. } else { // ¸ðµç ¿ø¼Ò°¡ 0ÀÌ ¾Æ´Ñ °æ¿ì. (x,y,z)¶ó ÇսôÙ. tmp.p[2] = -tmp.p[2]; extd[N].push_back(tmp); // (x,y,-z) tmp.p[1] = -tmp.p[1]; extd[N].push_back(tmp); // (x,-y,-z) tmp.p[2] = -tmp.p[2]; extd[N].push_back(tmp); // (x,-y,z) // ÀÌ·¸°Ô 4°³¸¦ Ãß°¡ÇÕ´Ï´Ù. ù ¼ººÐÀÌ -xÀÎ °æ¿ìµéÀº ¸ðµÎ À̵éÀÇ ºÎÈ£¸¦ ¹Ù²Û °ÍÀ¸·Î ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. } } } } // º¤ÅÍÀÇ °¡´ÉÇÑ ºÎÈ£ ÇüŸ¦ ¸ðµÎ extd[N]¿¡ Ãß°¡ÇÕ´Ï´Ù. ´Ü, (x,y,z)¿Í (-x,-y,-z)°¡ µ¿½Ã¿¡ Ãß°¡µÇÁö´Â ¾Êµµ·Ï ÇÕ´Ï´Ù. int inpro(tiii x, tiii y) { return x.p[0] * y.p[0] + x.p[1] * y.p[1] + x.p[2] * y.p[2]; } // ³»Àû bool check(int N, int a, int b, int c) { if (inpro(extd[N][a], extd[N][b]) != 0) return false; if (inpro(extd[N][b], extd[N][c]) != 0) return false; if (inpro(extd[N][c], extd[N][a]) != 0) return false; return true; } // extd[N][a], extd[N][b], extd[N][c] 3°³ÀÇ º¤ÅÍ°¡ ¼­·Î ¼öÁ÷ÀÎÁö È®ÀÎÇÕ´Ï´Ù. int main() { int i, j, k, n, x, y, z, s, adj, ss, NNN; // i,j,k,nÀº ·çÇÁ¹®À» À§ÇÑ º¯¼öÀÔ´Ï´Ù. x,y,z´Â Á¤À°¸éü°¡ µé¾î°¡´Â Á÷À°¸éüÀÇ Å©±â¸¦ ³ªÅ¸³À´Ï´Ù. long long ans = 0LL, inc; // ans´Â ¿ì¸®°¡ ±¸ÇÏ·Á´Â ¹®Á¦ÀÇ ´äÀÔ´Ï´Ù. int zzzz[3]; tiii temp; freopen("output.txt", "w+", stdout); // Ãâ·Â ³»¿ëÀÌ ¸¹Àº °ü°è·Î, ´Ù¸¥ ÆÄÀÏ¿¡ Ãâ·ÂÇÏ¿´½À´Ï´Ù. for (n = 1; n<124; n++) { printf("n = %d\n", n); for (i = 0; i <= n; i++) { for (j = 0; j <= i; j++) { for (k = 0; k <= j; k++) { if (i*i + j * j + k * k == n * n) { // ±æÀÌ°¡ nÀÎ º¤ÅÍ (i,j,k) temp.p[0] = i; temp.p[1] = j; temp.p[2] = k; l[n].push_back(temp); if (i == j) { // (i,i,k) ÇüÅ zzzz[0] = i; zzzz[1] = j; zzzz[2] = k; push(n, zzzz); // (i,i,k)¿Í ºÎÈ£ ¹Ù²Û °Íµé zzzz[1] = k; zzzz[2] = i; push(n, zzzz); // (i,k,i)¿Í...(ÀÌÇÏ µ¿ÀÏ) zzzz[0] = k; zzzz[1] = i; push(n, zzzz); // (k,i,i) } else if (j == k) { // (i,j,j) ÇüÅ zzzz[0] = i; zzzz[1] = j; zzzz[2] = k; push(n, zzzz); // (i,j,j) zzzz[0] = k; zzzz[1] = i; push(n, zzzz); // (j,i,j) zzzz[1] = k; zzzz[2] = i; push(n, zzzz); // (j,j,i) } else { // (i,j,k) ÇüÅ zzzz[0] = i; zzzz[1] = j; zzzz[2] = k; next_permutation(zzzz, zzzz + 3); do { push(n, zzzz); } while (next_permutation(zzzz, zzzz + 3)); //next_permutationÀ» ÇÑ ¹ø¾¿ ÇØÁÖ¸é, °¡´ÉÇÑ ¸ðµç 6°¡Áö¿¡ ´ëÇØ ½ÇÇàÇÕ´Ï´Ù. } //printf("l[%d][%d] = (%d, %d, %d)\n",n,(int)l[n].size()-1,i,j,k); } } } } // ±æÀÌ°¡ ÀÚ¿¬¼öÀÎ ¸ðµç º¤ÅÍ Ã£±â(l[n]¿¡´Â ´ëÇ¥ º¤ÅÍ((i,j,k) i>=j>=k>=0), extd[n]¿¡´Â ¸ðµç º¤ÅÍ(´Ü, (a,b,c)¿Í (-a,-b,-c)´Â °°Àº °ÍÀ¸·Î Ãë±Þ) Æ÷ÇÔ) s = (int)l[n].size(); ss = (int)extd[n].size(); //for(i=0;i