IMO 2021 第 1 题拓展问题的两个极值的编程求解
IMO 2021 第 1 题拓展问题的两个极值的编程求解
本篇是 IMO 2021 第一题题解及相关拓展问题分析 的续篇。
拓展问题三:
(I). 求 n 的最小值,使得 n, n + 1, ..., 2n 中存在奇数环;
(II). 求 k 的最小值,使得当 n ≥ k 时,n, n + 1, ..., 2n 中存在奇数环。
SItem 结构定义
1 #include <stdio.h> 2 #include <stdint.h> 3 #include <string> 4 #include <list> 5 #include <set> 6 #include <map> 7 #include <iostream> 8 9 typedef unsigned char u8; 10 struct SItem 11 { 12 int num; 13 u8 grp; 14 std::set<int> squares; 15 16 SItem() {} 17 SItem(int val, u8 group, int square) { 18 num = val; grp = group; 19 if (square != 0) 20 squares.insert(square); 21 } 22 };
check 函数实现
1 bool check(int val) 2 { 3 int head = val; 4 int tail = val + val; 5 int hsum = tail + 1; 6 int tsum = tail + tail - 1; 7 std::map<int, int> mapSquare; 8 int idx = 2; 9 int square = idx * idx; 10 printf("For n=%d, square set:", head); 11 while (square <= tsum) { 12 if (square >= hsum) { 13 mapSquare[idx] = square; 14 printf(" %d", square); 15 } 16 ++idx; 17 square = idx * idx; 18 } 19 printf(".\n"); 20 if (mapSquare.size() <= 2) 21 return true; 22 size_t squares = mapSquare.size(); 23 std::map<int, int>::iterator itS = mapSquare.begin(); 24 for (; squares >= 3; --squares, ++itS) { 25 if (itS->first % 2 == 1) { 26 int k = (itS->first + 1) / 2; 27 int a = k * 2 * (k - 2), b = k * k * 2 + 1, c = k * 2 * (k + 2); 28 if (a >= head && c <= tail) { 29 printf("a=%d, b=%d, c=%d.\n", a, b, c); 30 return false; 31 } 32 } 33 } 34 /// grouping 35 idx = head; 36 std::map<int, SItem> mapDone; 37 std::list<SItem> lstPending; 38 bool bFlict = false; 39 while (idx <= tail) { 40 if (lstPending.empty()) { 41 if (mapDone.find(idx) != mapDone.end()) { 42 ++idx; 43 continue; 44 } 45 SItem item(idx, 0, 0); 46 lstPending.push_back(item); 47 } 48 std::list<SItem>::iterator itHead = lstPending.begin(); 49 for (auto it = mapSquare.begin(); it != mapSquare.end(); ++it) { 50 if (itHead->squares.find(it->second) != itHead->squares.end()) 51 continue; 52 int oppo = it->second - itHead->num; 53 if (oppo == itHead->num) 54 continue; 55 if (oppo < head || oppo > tail) 56 continue; 57 std::map<int, SItem>::iterator itM = mapDone.find(oppo); 58 if (itM != mapDone.end()) { 59 if (itM->second.grp == 1 - itHead->grp) 60 continue; 61 printf("n=%d: %d must belong to both groups when dealing %d!\n", head, oppo, itHead->num); 62 bFlict = true; 63 break; 64 } 65 SItem item(oppo, 1 - itHead->grp, it->second); 66 lstPending.push_back(item); 67 itHead->squares.insert(it->second); 68 } // end of inner loop 69 if (bFlict) { 70 break; 71 } 72 mapDone[itHead->num] = *itHead; 73 lstPending.erase(itHead); 74 } // end of outer loop 75 printf("Grouping info for n=%d:\n", head); 76 for (auto it = mapDone.begin(); it != mapDone.end(); ++it) 77 printf(" %d[%d]", it->first, (int)it->second.grp); 78 printf(".\n"); 79 if (!lstPending.empty()) { 80 printf("Pending info:\n"); 81 for (auto it = lstPending.begin(); it != lstPending.end(); ++it) 82 printf(" %d[%d]", it->num, (int)it->grp); 83 printf(".\n"); 84 } 85 return (!bFlict); 86 }
main 函数实现
1 int main() 2 { 3 printf("The 1st number please: "); 4 std::string strInput; 5 getline(std::cin, strInput); 6 int raw = (int)strtoul(strInput.c_str(), 0, 10); 7 if (raw >= 100 || raw < 3) { 8 printf("\n The 1st number should be in [3,99].\n"); 9 getline(std::cin, strInput); 10 return 0; 11 } 12 std::list<int> lstCan; 13 std::list<int> lstNot; 14 for (int idx = raw; idx < raw + 15 && idx <= 100; ++idx) 15 if (check(idx)) 16 lstCan.push_back(idx); 17 else 18 lstNot.push_back(idx); 19 printf("\n"); 20 if (!lstCan.empty()) { 21 printf("CAN-list:"); 22 for (auto it = lstCan.begin(); it != lstCan.end(); ++it) 23 printf(" %d", *it); 24 printf(".\n"); 25 } 26 if (!lstNot.empty()) { 27 printf("NOT-list:"); 28 for (auto it = lstNot.begin(); it != lstNot.end(); ++it) 29 printf(" %d", *it); 30 printf(".\n"); 31 } 32 getline(std::cin, strInput); 33 return 0; 34 }
n = 3 到 17 的运行结果分析
PS H:\Read\num\Release> .\grouping The 1st number please: 3 For n=3, square set: 9. For n=4, square set: 9. For n=5, square set: 16. For n=6, square set: 16. For n=7, square set: 16 25. For n=8, square set: 25. For n=9, square set: 25. For n=10, square set: 25 36. For n=11, square set: 25 36. For n=12, square set: 25 36. For n=13, square set: 36 49. For n=14, square set: 36 49. For n=15, square set: 36 49. For n=16, square set: 36 49. For n=17, square set: 36 49 64. Grouping info for n=17: 17[0] 18[0] 19[1] 20[0] 21[0] 22[0] 23[0] 24[0] 25[1] 26[1] 27[1] 28[1] 29[1]
30[0] 31[1] 32[1] 33[0] 34[1]. CAN-list: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17.
n = 3 时,n, n+1, ..., 2n 中两数之和只有一个完全平方数,即 9,由前面分析,n, n+1, ..., 2n 可以分为两组,使得其中每组中两数之和均不是完全平方数。n = 4, ..., 16 时,有同样结论。
n = 17 时,n, n+1, ..., 2n 中两数之和有 3 个完全平方数,即 36, 49, 64,但 n, n+1, ..., 2n 还是可以分为两组,使得其中每组中两数之和均不是完全平方数,程序运行结果具体给出了一种分组方法,其中 [0] 表示 A 组,[1] 表示 B 组,如 17[0] 表示 17 在 A 组。
n = 3, 4, ..., 17 都是可分的情形(n, n+1, ..., 2n 可以分为两组,使得其中每组中两数之和均不是完全平方数),故有 CAN-list: 3 4 ... 17.
n = 18 到 32 的运行结果分析
PS H:\Read\num\Release> .\grouping The 1st number please: 18 For n=18, square set: 49 64. For n=19, square set: 49 64. For n=20, square set: 49 64. For n=21, square set: 49 64 81. Grouping info for n=21: 21[0] 22[0] 23[1] 24[0] 25[1] 26[0] 27[1] 28[1] 29[0] 30[0] 31[0] 32[0]
33[1] 34[1] 35[1] 36[0] 37[0] 38[1] 39[0] 40[1] 41[0] 42[1]. For n=22, square set: 49 64 81. Grouping info for n=22: 22[0] 23[1] 24[0] 25[1] 26[0] 27[1] 28[0] 29[0] 30[0] 31[0] 32[0] 33[1]
34[1] 35[1] 36[1] 37[0] 38[1] 39[0] 40[1] 41[0] 42[1] 43[0] 44[1]. For n=23, square set: 49 64 81. Grouping info for n=23: 23[0] 24[1] 25[0] 26[1] 27[0] 28[0] 29[0] 30[0] 31[0] 32[0] 33[1] 34[1]
35[1] 36[1] 37[1] 38[0] 39[1] 40[0] 41[1] 42[0] 43[1] 44[0] 45[0] 46[0]. For n=24, square set: 49 64 81. Grouping info for n=24: 24[0] 25[1] 26[0] 27[0] 28[0] 29[0] 30[0] 31[0] 32[0] 33[1] 34[1] 35[1]
36[1] 37[1] 38[1] 39[0] 40[1] 41[0] 42[1] 43[0] 44[0] 45[0] 46[0] 47[0]
48[0]. For n=25, square set: 64 81. For n=26, square set: 64 81 100. Grouping info for n=26: 26[0] 27[0] 28[0] 29[0] 30[0] 31[0] 32[1] 33[1] 34[1] 35[1] 36[1] 37[1]
38[1] 39[0] 40[0] 41[1] 42[1] 43[0] 44[0] 45[0] 46[0] 47[0] 48[0] 49[0]
50[1] 51[1] 52[1]. For n=27, square set: 64 81 100. Grouping info for n=27: 27[0] 28[0] 29[0] 30[0] 31[0] 32[1] 33[1] 34[1] 35[1] 36[1] 37[1] 38[0]
39[0] 40[0] 41[1] 42[1] 43[1] 44[0] 45[0] 46[0] 47[0] 48[0] 49[0] 50[1]
51[1] 52[1] 53[1] 54[1]. For n=28, square set: 64 81 100. Grouping info for n=28: 28[0] 29[0] 30[0] 31[0] 32[1] 33[1] 34[1] 35[1] 36[1] 37[0] 38[0] 39[0]
40[0] 41[1] 42[1] 43[1] 44[1] 45[0] 46[0] 47[0] 48[0] 49[0] 50[1] 51[1]
52[1] 53[1] 54[1] 55[1] 56[0]. For n=29, square set: 64 81 100. Grouping info for n=29: 29[0] 30[0] 31[0] 32[1] 33[1] 34[1] 35[1] 36[0] 37[0] 38[0] 39[0] 40[0]
41[1] 42[1] 43[1] 44[1] 45[1] 46[0] 47[0] 48[0] 49[0] 50[1] 51[1] 52[1]
53[1] 54[1] 55[0] 56[0] 57[0] 58[0]. For n=30, square set: 64 81 100. Grouping info for n=30: 30[0] 31[0] 32[1] 33[1] 34[1] 35[0] 36[0] 37[0] 38[0] 39[0] 40[0] 41[1]
42[1] 43[1] 44[1] 45[1] 46[1] 47[0] 48[0] 49[0] 50[1] 51[1] 52[1] 53[1]
54[0] 55[0] 56[0] 57[0] 58[0] 59[0] 60[1]. For n=31, square set: 64 81 100 121. Grouping info for n=31: 31[0] 32[0] 33[1] 34[0] 35[0] 36[0] 37[0] 38[0] 39[1] 40[0] 41[1] 42[0]
43[1] 44[1] 45[1] 46[1] 47[1] 48[0] 49[1] 50[1] 51[0] 52[1] 53[0] 54[0]
55[0] 56[0] 57[0] 58[1] 59[0] 60[1] 61[0] 62[1]. For n=32, square set: 81 100 121. Grouping info for n=32: 32[0] 33[0] 34[0] 35[0] 36[0] 37[1] 38[0] 39[1] 40[0] 41[1] 42[0] 43[1]
44[0] 45[1] 46[1] 47[1] 48[1] 49[1] 50[0] 51[0] 52[0] 53[0] 54[0] 55[0]
56[1] 57[0] 58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1]. CAN-list: 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32.
n = 18, 19, ..., 32 都是可分的情形。
n = 33 到 47 的运行结果分析
PS H:\Read\num\Release> .\grouping The 1st number please: 33 For n=33, square set: 81 100 121. Grouping info for n=33: 33[0] 34[0] 35[1] 36[0] 37[1] 38[0] 39[1] 40[0] 41[1] 42[0] 43[1] 44[0]
45[1] 46[0] 47[1] 48[1] 49[0] 50[0] 51[1] 52[0] 53[0] 54[1] 55[0] 56[1]
57[0] 58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[1]. For n=34, square set: 81 100 121. Grouping info for n=34: 34[0] 35[1] 36[0] 37[1] 38[0] 39[1] 40[0] 41[1] 42[0] 43[1] 44[0] 45[1]
46[0] 47[1] 48[0] 49[0] 50[0] 51[1] 52[1] 53[0] 54[1] 55[0] 56[1] 57[0]
58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[1] 67[0] 68[1]. For n=35, square set: 81 100 121. Grouping info for n=35: 35[0] 36[1] 37[0] 38[1] 39[0] 40[1] 41[0] 42[1] 43[0] 44[1] 45[0] 46[1]
47[0] 48[0] 49[0] 50[0] 51[1] 52[1] 53[1] 54[0] 55[1] 56[0] 57[1] 58[0]
59[1] 60[0] 61[1] 62[0] 63[1] 64[0] 65[1] 66[0] 67[1] 68[0] 69[0] 70[0]. For n=36, square set: 81 100 121. Grouping info for n=36: 36[0] 37[1] 38[0] 39[1] 40[0] 41[1] 42[0] 43[1] 44[0] 45[1] 46[0] 47[0]
48[0] 49[0] 50[0] 51[1] 52[1] 53[1] 54[1] 55[0] 56[1] 57[0] 58[1] 59[0]
60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[1] 67[0] 68[0] 69[0] 70[0] 71[1]
72[1]. For n=37, square set: 81 100 121 144. Grouping info for n=37: 37[0] 38[1] 39[0] 40[1] 41[0] 42[1] 43[0] 44[1] 45[0] 46[0] 47[0] 48[0]
49[0] 50[1] 51[1] 52[1] 53[1] 54[1] 55[1] 56[0] 57[1] 58[0] 59[1] 60[0]
61[1] 62[0] 63[1] 64[0] 65[1] 66[0] 67[0] 68[0] 69[0] 70[0] 71[0] 72[1]
73[1] 74[1]. For n=38, square set: 81 100 121 144. Grouping info for n=38: 38[0] 39[1] 40[0] 41[1] 42[0] 43[1] 44[0] 45[0] 46[0] 47[0] 48[0] 49[0]
50[1] 51[1] 52[1] 53[1] 54[1] 55[1] 56[1] 57[0] 58[1] 59[0] 60[1] 61[0]
62[1] 63[0] 64[1] 65[0] 66[0] 67[0] 68[0] 69[0] 70[0] 71[0] 72[1] 73[1]
74[1] 75[1] 76[1]. For n=39, square set: 81 100 121 144. Grouping info for n=39: 39[0] 40[1] 41[0] 42[1] 43[0] 44[0] 45[0] 46[0] 47[0] 48[0] 49[0] 50[1]
51[1] 52[1] 53[1] 54[1] 55[1] 56[1] 57[1] 58[0] 59[1] 60[0] 61[1] 62[0]
63[1] 64[0] 65[0] 66[0] 67[0] 68[0] 69[0] 70[0] 71[0] 72[1] 73[1] 74[1]
75[1] 76[1] 77[1] 78[1]. For n=40, square set: 81 100 121 144. Grouping info for n=40: 40[0] 41[1] 42[0] 43[1] 44[0] 45[1] 46[0] 47[1] 48[0] 49[1] 50[1] 51[0]
52[1] 53[0] 54[1] 55[0] 56[1] 57[0] 58[1] 59[0] 60[1] 61[0] 62[1] 63[0]
64[1] 65[0] 66[1] 67[0] 68[1] 69[0] 70[1] 71[0] 72[0] 73[1] 74[0] 75[1]
76[0] 77[1] 78[0] 79[1] 80[0]. For n=41, square set: 100 121 144. Grouping info for n=41: 41[0] 42[0] 43[0] 44[0] 45[0] 46[0] 47[0] 48[0] 49[0] 50[1] 51[1] 52[1]
53[1] 54[1] 55[1] 56[1] 57[1] 58[1] 59[1] 60[0] 61[1] 62[0] 63[0] 64[0]
65[0] 66[0] 67[0] 68[0] 69[0] 70[0] 71[0] 72[1] 73[1] 74[1] 75[1] 76[1]
77[1] 78[1] 79[1] 80[1] 81[1] 82[1]. For n=42, square set: 100 121 144. Grouping info for n=42: 42[0] 43[0] 44[0] 45[0] 46[0] 47[0] 48[0] 49[0] 50[1] 51[1] 52[1] 53[1]
54[1] 55[1] 56[1] 57[1] 58[1] 59[0] 60[0] 61[1] 62[1] 63[0] 64[0] 65[0]
66[0] 67[0] 68[0] 69[0] 70[0] 71[0] 72[1] 73[1] 74[1] 75[1] 76[1] 77[1]
78[1] 79[1] 80[1] 81[1] 82[0] 83[0] 84[1]. For n=43, square set: 100 121 144 169. Grouping info for n=43: 43[0] 44[0] 45[0] 46[0] 47[0] 48[0] 49[0] 50[1] 51[1] 52[1] 53[1] 54[1]
55[1] 56[1] 57[1] 58[0] 59[1] 60[0] 61[1] 62[0] 63[1] 64[0] 65[0] 66[0]
67[0] 68[0] 69[0] 70[0] 71[0] 72[1] 73[1] 74[1] 75[1] 76[1] 77[1] 78[1]
79[1] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0] 86[1]. For n=44, square set: 100 121 144 169. Grouping info for n=44: 44[0] 45[0] 46[0] 47[0] 48[0] 49[0] 50[1] 51[1] 52[1] 53[1] 54[1] 55[1]
56[1] 57[0] 58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[0] 67[0]
68[0] 69[0] 70[0] 71[0] 72[1] 73[1] 74[1] 75[1] 76[1] 77[1] 78[1] 79[1]
80[0] 81[1] 82[0] 83[1] 84[0] 85[1] 86[0] 87[1] 88[0]. For n=45, square set: 100 121 144 169. Grouping info for n=45: 45[0] 46[1] 47[0] 48[1] 49[0] 50[0] 51[1] 52[0] 53[1] 54[0] 55[1] 56[0]
57[1] 58[0] 59[1] 60[0] 61[1] 62[0] 63[1] 64[0] 65[1] 66[0] 67[1] 68[0]
69[1] 70[0] 71[1] 72[1] 73[0] 74[1] 75[0] 76[1] 77[0] 78[1] 79[0] 80[1]
81[0] 82[1] 83[0] 84[1] 85[0] 86[1] 87[0] 88[1] 89[0] 90[1]. For n=46, square set: 100 121 144 169. Grouping info for n=46: 46[0] 47[1] 48[0] 49[1] 50[1] 51[0] 52[1] 53[0] 54[1] 55[0] 56[1] 57[0]
58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[1] 67[0] 68[1] 69[0]
70[1] 71[0] 72[0] 73[1] 74[0] 75[1] 76[0] 77[1] 78[0] 79[1] 80[0] 81[1]
82[0] 83[1] 84[0] 85[1] 86[0] 87[1] 88[0] 89[1] 90[0] 91[1] 92[0]. For n=47, square set: 100 121 144 169. Grouping info for n=47: 47[0] 48[1] 49[0] 50[0] 51[1] 52[0] 53[1] 54[0] 55[1] 56[0] 57[1] 58[0]
59[1] 60[0] 61[1] 62[0] 63[1] 64[0] 65[1] 66[0] 67[1] 68[0] 69[1] 70[0]
71[1] 72[1] 73[0] 74[1] 75[0] 76[1] 77[0] 78[1] 79[0] 80[1] 81[0] 82[1]
83[0] 84[1] 85[0] 86[1] 87[0] 88[1] 89[0] 90[1] 91[0] 92[1] 93[0] 94[1]. CAN-list: 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47.
同样,n = 32, 33, ..., 47 都是可分的情形。
至此,拓展 3 的第 1 个问题的求解可知为 n = 48。
n = 48 到 62 的运行结果分析
PS H:\Read\num\Release> .\grouping The 1st number please: 48 For n=48, square set: 100 121 144 169. a=48, b=73, c=96. For n=49, square set: 100 121 144 169. n=49: 70 must belong to both groups when dealing 74! Grouping info for n=49: 49[0] 51[1] 70[0] 72[1] 93[0] 95[1] 97[0]. Pending info: 74[0] 74[1] 76[1]. For n=50, square set: 121 144 169 196. Grouping info for n=50: 50[0] 51[1] 52[0] 53[1] 54[0] 55[1] 56[0] 57[1] 58[0] 59[1] 60[0] 61[1]
62[0] 63[1] 64[0] 65[1] 66[0] 67[1] 68[0] 69[1] 70[0] 71[1] 72[1] 73[0]
74[1] 75[0] 76[1] 77[0] 78[1] 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0]
86[1] 87[0] 88[1] 89[0] 90[1] 91[0] 92[1] 93[0] 94[1] 95[0] 96[1] 97[0]
98[0] 99[1] 100[0]. For n=51, square set: 121 144 169 196. Grouping info for n=51: 51[0] 52[1] 53[0] 54[1] 55[0] 56[1] 57[0] 58[1] 59[0] 60[1] 61[0] 62[1]
63[0] 64[1] 65[0] 66[1] 67[0] 68[1] 69[0] 70[1] 71[0] 72[0] 73[1] 74[0]
75[1] 76[0] 77[1] 78[0] 79[1] 80[0] 81[1] 82[0] 83[1] 84[0] 85[1] 86[0]
87[1] 88[0] 89[1] 90[0] 91[1] 92[0] 93[1] 94[0] 95[1] 96[0] 97[1] 98[1]
99[0] 100[1] 101[0] 102[1]. For n=52, square set: 121 144 169 196. Grouping info for n=52: 52[0] 53[1] 54[0] 55[1] 56[0] 57[1] 58[0] 59[1] 60[0] 61[1] 62[0] 63[1]
64[0] 65[1] 66[0] 67[1] 68[0] 69[1] 70[0] 71[1] 72[1] 73[0] 74[1] 75[0]
76[1] 77[0] 78[1] 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0] 86[1] 87[0]
88[1] 89[0] 90[1] 91[0] 92[1] 93[0] 94[1] 95[0] 96[1] 97[0] 98[0] 99[1]
100[0] 101[1] 102[0] 103[1] 104[0]. For n=53, square set: 121 144 169 196. Grouping info for n=53: 53[0] 54[1] 55[0] 56[1] 57[0] 58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1]
65[0] 66[1] 67[0] 68[1] 69[0] 70[1] 71[0] 72[0] 73[1] 74[0] 75[1] 76[0]
77[1] 78[0] 79[1] 80[0] 81[1] 82[0] 83[1] 84[0] 85[1] 86[0] 87[1] 88[0]
89[1] 90[0] 91[1] 92[0] 93[1] 94[0] 95[1] 96[0] 97[1] 98[1] 99[0] 100[1]
101[0] 102[1] 103[0] 104[1] 105[0] 106[1]. For n=54, square set: 121 144 169 196. Grouping info for n=54: 54[0] 55[1] 56[0] 57[1] 58[0] 59[1] 60[0] 61[1] 62[0] 63[1] 64[0] 65[1]
66[0] 67[1] 68[0] 69[1] 70[0] 71[1] 72[1] 73[0] 74[1] 75[0] 76[1] 77[0]
78[1] 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0] 86[1] 87[0] 88[1] 89[0]
90[1] 91[0] 92[1] 93[0] 94[1] 95[0] 96[1] 97[0] 98[0] 99[1] 100[0] 101[1]
102[0] 103[1] 104[0] 105[1] 106[0] 107[1] 108[0]. For n=55, square set: 121 144 169 196. Grouping info for n=55: 55[0] 56[1] 57[0] 58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[1]
67[0] 68[1] 69[0] 70[1] 71[0] 72[0] 73[1] 74[0] 75[1] 76[0] 77[1] 78[0]
79[1] 80[0] 81[1] 82[0] 83[1] 84[0] 85[1] 86[0] 87[1] 88[0] 89[1] 90[0]
91[1] 92[0] 93[1] 94[0] 95[1] 96[0] 97[1] 98[1] 99[0] 100[1] 101[0] 102[1]
103[0] 104[1] 105[0] 106[1] 107[0] 108[1] 109[0] 110[1]. For n=56, square set: 121 144 169 196. Grouping info for n=56: 56[0] 57[1] 58[0] 59[1] 60[0] 61[1] 62[0] 63[1] 64[0] 65[1] 66[0] 67[1]
68[0] 69[1] 70[0] 71[1] 72[1] 73[0] 74[1] 75[0] 76[1] 77[0] 78[1] 79[0]
80[1] 81[0] 82[1] 83[0] 84[1] 85[0] 86[1] 87[0] 88[1] 89[0] 90[1] 91[0]
92[1] 93[0] 94[1] 95[0] 96[1] 97[0] 98[0] 99[1] 100[0] 101[1] 102[0] 103[1]
104[0] 105[1] 106[0] 107[1] 108[0] 109[1] 110[0] 111[1] 112[0]. For n=57, square set: 121 144 169 196 225. Grouping info for n=57: 57[0] 58[1] 59[0] 60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[1] 67[0] 68[1]
69[0] 70[1] 71[0] 72[0] 73[1] 74[0] 75[1] 76[0] 77[1] 78[0] 79[1] 80[0]
81[1] 82[0] 83[1] 84[0] 85[1] 86[0] 87[1] 88[0] 89[1] 90[0] 91[1] 92[0]
93[1] 94[0] 95[1] 96[0] 97[1] 98[1] 99[0] 100[1] 101[0] 102[1] 103[0] 104[1]
105[0] 106[1] 107[0] 108[1] 109[0] 110[1] 111[0] 112[1] 113[0] 114[1]. For n=58, square set: 121 144 169 196 225. Grouping info for n=58: 58[0] 59[1] 60[0] 61[1] 62[0] 63[1] 64[0] 65[1] 66[0] 67[1] 68[0] 69[1]
70[0] 71[1] 72[1] 73[0] 74[1] 75[0] 76[1] 77[0] 78[1] 79[0] 80[1] 81[0]
82[1] 83[0] 84[1] 85[0] 86[1] 87[0] 88[1] 89[0] 90[1] 91[0] 92[1] 93[0]
94[1] 95[0] 96[1] 97[0] 98[0] 99[1] 100[0] 101[1] 102[0] 103[1] 104[0] 105[1]
106[0] 107[1] 108[0] 109[1] 110[0] 111[1] 112[0] 113[1] 114[0] 115[1] 116[0]. For n=59, square set: 121 144 169 196 225. Grouping info for n=59: 59[0] 60[1] 61[0] 62[1] 63[0] 64[1] 65[0] 66[1] 67[0] 68[1] 69[0] 70[1]
71[0] 72[0] 73[1] 74[0] 75[1] 76[0] 77[1] 78[0] 79[1] 80[0] 81[1] 82[0]
83[1] 84[0] 85[1] 86[0] 87[1] 88[0] 89[1] 90[0] 91[1] 92[0] 93[1] 94[0]
95[1] 96[0] 97[1] 98[1] 99[0] 100[1] 101[0] 102[1] 103[0] 104[1] 105[0]
106[1] 107[0] 108[1] 109[0] 110[1] 111[0] 112[1] 113[0] 114[1] 115[0]
116[1] 117[0] 118[1]. For n=60, square set: 121 144 169 196 225. Grouping info for n=60: 60[0] 61[1] 62[0] 63[1] 64[0] 65[1] 66[0] 67[1] 68[0] 69[1] 70[0] 71[1]
72[1] 73[0] 74[1] 75[0] 76[1] 77[0] 78[1] 79[0] 80[1] 81[0] 82[1] 83[0]
84[1] 85[0] 86[1] 87[0] 88[1] 89[0] 90[1] 91[0] 92[1] 93[0] 94[1] 95[0]
96[1] 97[0] 98[0] 99[1] 100[0] 101[1] 102[0] 103[1] 104[0] 105[1] 106[0]
107[1] 108[0] 109[1] 110[0] 111[1] 112[0] 113[1] 114[0] 115[1] 116[0] 117[1]
118[0] 119[1] 120[0]. For n=61, square set: 144 169 196 225. Grouping info for n=61: 61[0] 62[1] 63[0] 64[1] 65[0] 66[1] 67[0] 68[1] 69[0] 70[1] 71[0] 72[0]
73[1] 74[0] 75[1] 76[0] 77[1] 78[0] 79[1] 80[0] 81[1] 82[0] 83[1] 84[0]
85[1] 86[0] 87[1] 88[0] 89[1] 90[0] 91[1] 92[0] 93[1] 94[0] 95[1] 96[0]
97[1] 98[1] 99[0] 100[1] 101[0] 102[1] 103[0] 104[1] 105[0] 106[1] 107[0]
108[1] 109[0] 110[1] 111[0] 112[1] 113[0] 114[1] 115[0] 116[1] 117[0] 118[1]
119[0] 120[1] 121[0] 122[1]. For n=62, square set: 144 169 196 225. Grouping info for n=62: 62[0] 63[1] 64[0] 65[1] 66[0] 67[1] 68[0] 69[1] 70[0] 71[1] 72[1] 73[0]
74[1] 75[0] 76[1] 77[0] 78[1] 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0]
86[1] 87[0] 88[1] 89[0] 90[1] 91[0] 92[1] 93[0] 94[1] 95[0] 96[1] 97[0]
98[0] 99[1] 100[0] 101[1] 102[0] 103[1] 104[0] 105[1] 106[0] 107[1] 108[0]
109[1] 110[0] 111[1] 112[0] 113[1] 114[0] 115[1] 116[0] 117[1] 118[0] 119[1]
120[0] 121[1] 122[0] 123[1] 124[0]. CAN-list: 50 51 52 53 54 55 56 57 58 59 60 61 62. NOT-list: 48 49.
n = 48, 49 都是不可分的情形,这与上一篇的分析是相符的。n = 48 的情形存在 3 数环:48, 73, 96;而 n = 49 的情形,不存在 3 数环,但存在 5 数环:49, 51, 70, 74, 95。
n = 50, 51, ..., 62 都是可分的情形。
n = 63 到 77 的运行结果分析
PS H:\Read\num\Release> .\grouping The 1st number please: 63 For n=63, square set: 144 169 196 225. a=70, b=99, c=126. For n=64, square set: 144 169 196 225. a=70, b=99, c=126. For n=65, square set: 144 169 196 225 256. a=70, b=99, c=126. For n=66, square set: 144 169 196 225 256. a=70, b=99, c=126. For n=67, square set: 144 169 196 225 256. a=70, b=99, c=126. For n=68, square set: 144 169 196 225 256. a=70, b=99, c=126. For n=69, square set: 144 169 196 225 256. a=70, b=99, c=126. For n=70, square set: 144 169 196 225 256. a=70, b=99, c=126. For n=71, square set: 144 169 196 225 256. n=71: 96 must belong to both groups when dealing 100! Grouping info for n=71: 71[0] 73[1] 96[0] 98[1] 123[0] 125[1] 127[0]. Pending info: 100[0] 131[0] 100[1] 129[1] 102[1] 133[1] 129[1]. For n=72, square set: 169 196 225 256. Grouping info for n=72: 72[0] 73[1] 74[0] 75[1] 76[0] 77[1] 78[0] 79[1] 80[0] 81[1] 82[0] 83[1] 84[0]
85[1] 86[0] 87[1] 88[0] 89[1] 90[0] 91[1] 92[0] 93[1] 94[0] 95[1] 96[0] 97[1]
98[1] 99[0] 100[1] 101[0] 102[1] 103[0] 104[1] 105[0] 106[1] 107[0] 108[1] 109[0]
110[1] 111[0] 112[1] 113[0] 114[1] 115[0] 116[1] 117[0] 118[1] 119[0] 120[1] 121[0]
122[1] 123[0] 124[1] 125[0] 126[1] 127[0] 128[0] 129[1] 130[0] 131[1] 132[0] 133[1]
134[0] 135[1] 136[0] 137[1] 138[0] 139[1] 140[0] 141[1] 142[0] 143[1] 144[0]. For n=73, square set: 169 196 225 256 289. Grouping info for n=73: 73[0] 74[1] 75[0] 76[1] 77[0] 78[1] 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0]
86[1] 87[0] 88[1] 89[0] 90[1] 91[0] 92[1] 93[0] 94[1] 95[0] 96[1] 97[0] 98[0]
99[1] 100[0] 101[1] 102[0] 103[1] 104[0] 105[1] 106[0] 107[1] 108[0] 109[1] 110[0]
111[1] 112[0] 113[1] 114[0] 115[1] 116[0] 117[1] 118[0] 119[1] 120[0] 121[1] 122[0]
123[1] 124[0] 125[1] 126[0] 127[1] 128[1] 129[0] 130[1] 131[0] 132[1] 133[0] 134[1]
135[0] 136[1] 137[0] 138[1] 139[0] 140[1] 141[0] 142[1] 143[0] 144[1] 145[0] 146[1]. For n=74, square set: 169 196 225 256 289. Grouping info for n=74: 74[0] 75[1] 76[0] 77[1] 78[0] 79[1] 80[0] 81[1] 82[0] 83[1] 84[0] 85[1] 86[0]
87[1] 88[0] 89[1] 90[0] 91[1] 92[0] 93[1] 94[0] 95[1] 96[0] 97[1] 98[1] 99[0]
100[1] 101[0] 102[1] 103[0] 104[1] 105[0] 106[1] 107[0] 108[1] 109[0] 110[1] 111[0]
112[1] 113[0] 114[1] 115[0] 116[1] 117[0] 118[1] 119[0] 120[1] 121[0] 122[1] 123[0]
124[1] 125[0] 126[1] 127[0] 128[0] 129[1] 130[0] 131[1] 132[0] 133[1] 134[0] 135[1]
136[0] 137[1] 138[0] 139[1] 140[0] 141[1] 142[0] 143[1] 144[0] 145[1] 146[0] 147[1]
148[0]. For n=75, square set: 169 196 225 256 289. Grouping info for n=75: 75[0] 76[1] 77[0] 78[1] 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0] 86[1] 87[0]
88[1] 89[0] 90[1] 91[0] 92[1] 93[0] 94[1] 95[0] 96[1] 97[0] 98[0] 99[1] 100[0]
101[1] 102[0] 103[1] 104[0] 105[1] 106[0] 107[1] 108[0] 109[1] 110[0] 111[1] 112[0]
113[1] 114[0] 115[1] 116[0] 117[1] 118[0] 119[1] 120[0] 121[1] 122[0] 123[1] 124[0]
125[1] 126[0] 127[1] 128[1] 129[0] 130[1] 131[0] 132[1] 133[0] 134[1] 135[0] 136[1]
137[0] 138[1] 139[0] 140[1] 141[0] 142[1] 143[0] 144[1] 145[0] 146[1] 147[0] 148[1]
149[0] 150[1]. For n=76, square set: 169 196 225 256 289. Grouping info for n=76: 76[0] 77[1] 78[0] 79[1] 80[0] 81[1] 82[0] 83[1] 84[0] 85[1] 86[0] 87[1] 88[0]
89[1] 90[0] 91[1] 92[0] 93[1] 94[0] 95[1] 96[0] 97[1] 98[1] 99[0] 100[1] 101[0]
102[1] 103[0] 104[1] 105[0] 106[1] 107[0] 108[1] 109[0] 110[1] 111[0] 112[1] 113[0]
114[1] 115[0] 116[1] 117[0] 118[1] 119[0] 120[1] 121[0] 122[1] 123[0] 124[1] 125[0]
126[1] 127[0] 128[0] 129[1] 130[0] 131[1] 132[0] 133[1] 134[0] 135[1] 136[0] 137[1]
138[0] 139[1] 140[0] 141[1] 142[0] 143[1] 144[0] 145[1] 146[0] 147[1] 148[0] 149[1]
150[0] 151[1] 152[0]. For n=77, square set: 169 196 225 256 289. Grouping info for n=77: 77[0] 78[1] 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0] 86[1] 87[0] 88[1] 89[0] 90[1]
91[0] 92[1] 93[0] 94[1] 95[0] 96[1] 97[0] 98[0] 99[1] 100[0] 101[1] 102[0] 103[1]
104[0] 105[1] 106[0] 107[1] 108[0] 109[1] 110[0] 111[1] 112[0] 113[1] 114[0] 115[1]
116[0] 117[1] 118[0] 119[1] 120[0] 121[1] 122[0] 123[1] 124[0] 125[1] 126[0] 127[1]
128[1] 129[0] 130[1] 131[0] 132[1] 133[0] 134[1] 135[0] 136[1] 137[0] 138[1] 139[0]
140[1] 141[0] 142[1] 143[0] 144[1] 145[0] 146[1] 147[0] 148[1] 149[0] 150[1] 151[0]
152[1] 153[0] 154[1]. CAN-list: 72 73 74 75 76 77. NOT-list: 63 64 65 66 67 68 69 70 71.
n = 63, 64, ..., 70 都是不可分的情形,都是存在 3 数环:70, 99, 126。而 n = 71 为不可分的情形,不存在 3 数环,但存在 5 数环:71, 73, 96, 100, 125。
n = 72, 73, ..., 77 都是可分的情形。
n = 78 到 92 的运行结果分析
PS H:\Read\num\Release> .\grouping The 1st number please: 78 For n=78, square set: 169 196 225 256 289. Grouping info for n=78: 78[0] 79[1] 80[0] 81[1] 82[0] 83[1] 84[0] 85[1] 86[0] 87[1] 88[0] 89[1] 90[0]
91[1] 92[0] 93[1] 94[0] 95[1] 96[0] 97[1] 98[1] 99[0] 100[1] 101[0] 102[1] 103[0]
104[1] 105[0] 106[1] 107[0] 108[1] 109[0] 110[1] 111[0] 112[1] 113[0] 114[1] 115[0]
116[1] 117[0] 118[1] 119[0] 120[1] 121[0] 122[1] 123[0] 124[1] 125[0] 126[1] 127[0]
128[0] 129[1] 130[0] 131[1] 132[0] 133[1] 134[0] 135[1] 136[0] 137[1] 138[0] 139[1]
140[0] 141[1] 142[0] 143[1] 144[0] 145[1] 146[0] 147[1] 148[0] 149[1] 150[0] 151[1]
152[0] 153[1] 154[0] 155[1] 156[0]. For n=79, square set: 169 196 225 256 289. Grouping info for n=79: 79[0] 80[1] 81[0] 82[1] 83[0] 84[1] 85[0] 86[1] 87[0] 88[1] 89[0] 90[1] 91[0] 92[1]
93[0] 94[1] 95[0] 96[1] 97[0] 98[0] 99[1] 100[0] 101[1] 102[0] 103[1] 104[0] 105[1]
106[0] 107[1] 108[0] 109[1] 110[0] 111[1] 112[0] 113[1] 114[0] 115[1] 116[0] 117[1]
118[0] 119[1] 120[0] 121[1] 122[0] 123[1] 124[0] 125[1] 126[0] 127[1] 128[1] 129[0]
130[1] 131[0] 132[1] 133[0] 134[1] 135[0] 136[1] 137[0] 138[1] 139[0] 140[1] 141[0]
142[1] 143[0] 144[1] 145[0] 146[1] 147[0] 148[1] 149[0] 150[1] 151[0] 152[1] 153[0]
154[1] 155[0] 156[1] 157[0] 158[1]. For n=80, square set: 169 196 225 256 289. a=96, b=129, c=160. For n=81, square set: 169 196 225 256 289. a=96, b=129, c=160. For n=82, square set: 169 196 225 256 289 324. a=96, b=129, c=160. For n=83, square set: 169 196 225 256 289 324. a=96, b=129, c=160. For n=84, square set: 169 196 225 256 289 324. a=96, b=129, c=160. For n=85, square set: 196 225 256 289 324. a=96, b=129, c=160. For n=86, square set: 196 225 256 289 324. a=96, b=129, c=160. For n=87, square set: 196 225 256 289 324. a=96, b=129, c=160. For n=88, square set: 196 225 256 289 324. a=96, b=129, c=160. For n=89, square set: 196 225 256 289 324. a=96, b=129, c=160. For n=90, square set: 196 225 256 289 324. a=96, b=129, c=160. For n=91, square set: 196 225 256 289 324 361. a=96, b=129, c=160. For n=92, square set: 196 225 256 289 324 361. a=96, b=129, c=160. CAN-list: 78 79. NOT-list: 80 81 82 83 84 85 86 87 88 89 90 91 92.
n = 78, 79 还是可分的情形。n = 80, 81, ..., 92 则都是不可分的情形,且都有 3 数环:96, 129, 160。
n = 93 到 100 的运行结果分析
PS H:\Read\num\Release> .\grouping The 1st number please: 93 For n=93, square set: 196 225 256 289 324 361. a=96, b=129, c=160. For n=94, square set: 196 225 256 289 324 361. a=96, b=129, c=160. For n=95, square set: 196 225 256 289 324 361. a=96, b=129, c=160. For n=96, square set: 196 225 256 289 324 361. a=96, b=129, c=160. For n=97, square set: 196 225 256 289 324 361. n=97: 126 must belong to both groups when dealing 130! Grouping info for n=97: 97[0] 99[1] 126[0] 128[1] 157[0] 159[1] 161[0] 190[0] 192[1]. Pending info: 130[0] 165[0] 132[0] 169[0] 130[1] 163[1] 132[1] 167[1] 134[1] 171[1] 163[1]. For n=98, square set: 225 256 289 324 361. Grouping info for n=98: 98[0] 99[1] 100[0] 101[1] 102[0] 103[1] 104[0] 105[1] 106[0] 107[1] 108[0] 109[1]
110[0] 111[1] 112[0] 113[1] 114[0] 115[1] 116[0] 117[1] 118[0] 119[1] 120[0] 121[1]
122[0] 123[1] 124[0] 125[1] 126[0] 127[1] 128[1] 129[0] 130[1] 131[0] 132[1] 133[0]
134[1] 135[0] 136[1] 137[0] 138[1] 139[0] 140[1] 141[0] 142[1] 143[0] 144[1] 145[0]
146[1] 147[0] 148[1] 149[0] 150[1] 151[0] 152[1] 153[0] 154[1] 155[0] 156[1] 157[0]
158[1] 159[0] 160[1] 161[0] 162[0] 163[1] 164[0] 165[1] 166[0] 167[1] 168[0] 169[1]
170[0] 171[1] 172[0] 173[1] 174[0] 175[1] 176[0] 177[1] 178[0] 179[1] 180[0] 181[1]
182[0] 183[1] 184[0] 185[1] 186[0] 187[1] 188[0] 189[1] 190[0] 191[1] 192[0] 193[1]
194[0] 195[1] 196[0]. For n=99, square set: 225 256 289 324 361. a=126, b=163, c=198. For n=100, square set: 225 256 289 324 361. a=126, b=163, c=198. CAN-list: 98. NOT-list: 93 94 95 96 97 99 100.
n = 93, 94, ..., 96 是不可分的情形,且都有 3 数环:96, 129, 160。
n = 97 也是不可分的情形,没有 3 数环,但有 5 数环:97, 99, 126, 130, 159。
n = 98 是可分的情形。
n = 99, 100 是不可分的情形,且都有 3 数环:126, 163, 198。
至此,拓展三的第 2 问的答案明确了,是 k = 99。