diff --git a/.gitignore b/.gitignore index 5ccec7eb63d04ce3a750679aeba75c7c7142ba3a..778cafa1186c79a1047cbc1e3f9da4dc440bbdb3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ leetcode_template.md auto_gen_leetcode_tem.py leetcode_helper.py lanqiao_helper.py -lanqiao_template.md \ No newline at end of file +lanqiao_template.md +./src/__pycache__/*.pyc \ No newline at end of file diff --git "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.cpp" "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.cpp" index c70a056b76bc3879a789971215cd56be5f6e4ad8..15ec394098c9c942a3e634351d8cb3ccda81a62a 100644 --- "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.cpp" +++ "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.cpp" @@ -2,8 +2,6 @@ #include int co[100100][2]; -//n块巧克力,分成x*x型的。 -//返回巧克力的块数 int coun(int n, int x) { int sum = 0; @@ -14,16 +12,15 @@ int coun(int n, int x) return sum; } -//二分求解 int binary(int n, int k) { int l = 0, r = 100000; while (l < r) { int mid = (r - l) / 2 + l; - if (coun(n, mid) < k) + if (coun(n, mid) > k) r = mid - 1; - else if (coun(n, mid) > k) + else if (coun(n, mid) < k) l = mid + 1; else return mid; diff --git "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.md" "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.md" index 00b64eeb83a4ed6394af59e1240f582ed63e9d80..dd4200fb890772aeea8281ced2ad80a541495048 100644 --- "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.md" +++ "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\345\267\247\345\205\213\345\212\233/solution.md" @@ -29,30 +29,107 @@ ## aop ### before ```cpp +#include +#include +int co[100100][2]; + +int coun(int n, int x) +{ + int sum = 0; + for (int i = 0; i < n; i++) + { + sum += (co[i][0] / x) * (co[i][1] / x); + } + return sum; +} ``` ### after ```cpp - +int main() +{ + int n; + int k; + scanf("%d%d", &n, &k); + for (int i = 0; i < n; i++) + scanf("%d%d", &co[i][0], &co[i][1]); + printf("%d\n", binary(n, k)); +} ``` ## 答案 ```cpp - +int binary(int n, int k) +{ + int l = 0, r = 100000; + while (l < r) + { + int mid = (r - l) / 2 + l; + if (coun(n, mid) < k) + r = mid - 1; + else if (coun(n, mid) > k) + l = mid + 1; + else + return mid; + } + return r; +} ``` ## 选项 ### A ```cpp - +int binary(int n, int k) +{ + int l = 0, r = 100000; + while (l < r) + { + int mid = (r - l) / 2 + l; + if (coun(n, mid) < k) + r = mid; + else if (coun(n, mid) > k) + l = mid; + else + return mid; + } + return r; +} ``` ### B ```cpp - +int binary(int n, int k) +{ + int l = 0, r = 100000; + while (l < r) + { + int mid = (r - l) / 2 + l; + if (coun(n, mid) > k) + r = mid; + else if (coun(n, mid) < k) + l = mid; + else + return mid; + } + return r; +} ``` ### C ```cpp - +int binary(int n, int k) +{ + int l = 0, r = 100000; + while (l < r) + { + int mid = (r - l) / 2 + l; + if (coun(n, mid) > k) + r = mid - 1; + else if (coun(n, mid) < k) + l = mid + 1; + else + return mid; + } + return r; +} ``` diff --git "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.cpp" "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.cpp" index e00bcf3c3ce27c18b57f8f302da7f59564dbe747..786098d60f0dcf4ac55490f650c836cbff6a6010 100644 --- "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.cpp" +++ "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.cpp" @@ -1,19 +1,19 @@ #include using namespace std; -long pow_2(int b) //快速幂运算 +long pow_2(int b) { long x = 2; long res = 1; while (b > 0) { if (b & 1) - res *= x; - b >>= 1; //右移一位 + res = x; + b >>= 1; x = x * x; } return res; } -int gcd(long a, long b) //求出最大公约数 +int gcd(long a, long b) { if (b == 0) return a; @@ -21,6 +21,6 @@ int gcd(long a, long b) //求出最大公约数 } int main() { - cout << gcd(pow_2(20) - 1, pow_2(19)) << endl; //最大公约数 - cout << pow_2(20) - 1 << "/" << pow_2(19) << endl; //输出分子分母 + cout << gcd(pow_2(20) - 1, pow_2(19)) << endl; + cout << pow_2(20) - 1 << "/" << pow_2(19) << endl; } diff --git "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.md" "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.md" index 799f9bc23eb14d4f0ede78e62aced744d482005c..b7cd297e37850b116003260818fd3f9de3d1979c 100644 --- "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.md" +++ "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\346\225\260/solution.md" @@ -6,30 +6,89 @@ ## aop ### before ```cpp - +#include +using namespace std; ``` ### after ```cpp - +int gcd(long a, long b) +{ + if (b == 0) + return a; + return gcd(b, a % b); +} +int main() +{ + cout << gcd(pow_2(20) - 1, pow_2(19)) << endl; + cout << pow_2(20) - 1 << "/" << pow_2(19) << endl; +} ``` ## 答案 ```cpp - +long pow_2(int b) +{ + long x = 2; + long res = 1; + while (b > 0) + { + if (b & 1) + res *= x; + b >>= 1; + x = x * x; + } + return res; +} ``` ## 选项 ### A ```cpp - +long pow_2(int b) +{ + long x = 2; + long res = 1; + while (b > 0) + { + if (b & 1) + res *= x; + b <<= 1; + x = x * x; + } + return res; +} ``` ### B ```cpp - +long pow_2(int b) +{ + long x = 2; + long res = 1; + while (b > 0) + { + if (b && 1) + res *= x; + b <<= 1; + x = x * x; + } + return res; +} ``` ### C ```cpp - +long pow_2(int b) +{ + long x = 2; + long res = 1; + while (b > 0) + { + if (b & 1) + res = x; + b >>= 1; + x = x * x; + } + return res; +} ``` diff --git "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.cpp" "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.cpp" index b20dddb363d6889340c99ff2e7211a85ba784387..bc6754884bd6f1022050b63803a7278eb7268808 100644 --- "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.cpp" +++ "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.cpp" @@ -2,40 +2,40 @@ using namespace std; int main() { - int n; //小朋友数量 + int n; cin >> n; - int *Candy = new int[n]; //存储每个小朋友的糖果数 + int *Candy = new int[n]; for (int i = 0; i < n; i++) { cin >> Candy[i]; } - int total = 0; //补发的糖果总数 + int total = 0; while (1) { - bool flag = true; //判断每人糖果数量是否相同 + bool flag = true; for (int i = 1; i < n; i++) { if (Candy[0] != Candy[i]) - { //不相同 + { flag = false; break; } } - if (flag == true) //数量相同,退出循环 + if (flag == true) break; - int temp = Candy[n - 1]; //记录最后一个小朋友手中的糖果 + int temp = Candy[n - 1]; for (int i = n - 1; i >= 0; i--) { if (i == 0) - { //如果是第一个小朋友 - Candy[0] = Candy[0] / 2 + temp / 2; //最后一个小朋友获得最初第一个人的一半 + { + Candy[0] = Candy[0] / 2 + temp / 2; } else - Candy[i] = Candy[i] / 2 + Candy[i - 1] / 2; // 每个小朋友都把自己的糖果分一半给左手边的孩子 - if (Candy[i] % 2 != 0) - { //如果此时手中为奇数,则补糖果 + Candy[i] = Candy[i] / 2 + Candy[i - 1] / 2; + if (Candy[i] % 2 == 0) + { Candy[i] += 1; - total += 1; //补发数量加1 + total += 1; } } } diff --git "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.md" "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.md" index 2b4d2ef59ee4ac777e1d0429a93828b3e09cd9e5..853965a466a778b1e3f43affd515da276f89ff7e 100644 --- "a/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.md" +++ "b/data/1.\347\256\227\346\263\225\345\210\235\351\230\266/1.\350\223\235\346\241\245\346\235\257/\345\210\206\347\263\226\346\236\234/solution.md" @@ -26,7 +26,8 @@ ## aop ### before ```cpp - +#include +using namespace std; ``` ### after ```cpp @@ -35,21 +36,182 @@ ## 答案 ```cpp - +int main() +{ + int n; + cin >> n; + int *Candy = new int[n]; + for (int i = 0; i < n; i++) + { + cin >> Candy[i]; + } + int total = 0; + while (1) + { + bool flag = true; + for (int i = 1; i < n; i++) + { + if (Candy[0] != Candy[i]) + { + flag = false; + break; + } + } + if (flag == true) + break; + int temp = Candy[n - 1]; + for (int i = n - 1; i >= 0; i--) + { + if (i == 0) + { + Candy[0] = Candy[0] / 2 + temp / 2; + } + else + Candy[i] = Candy[i] / 2 + Candy[i - 1] / 2; + if (Candy[i] % 2 != 0) + { + Candy[i] += 1; + total += 1; + } + } + } + cout << total << endl; +} ``` ## 选项 ### A ```cpp - +int main() +{ + int n; + cin >> n; + int *Candy = new int[n]; + for (int i = 0; i < n; i++) + { + cin >> Candy[i]; + } + int total = 0; + while (1) + { + bool flag = true; + for (int i = 1; i < n; i++) + { + if (Candy[0] != Candy[i]) + { + flag = false; + break; + } + } + if (flag == true) + break; + int temp = Candy[n - 1]; + for (int i = n; i >= 0; i--) + { + if (i == 0) + { + Candy[0] = Candy[0] / 2 + temp / 2; + } + else + Candy[i] = Candy[i] / 2 + Candy[i - 1] / 2; + if (Candy[i] % 2 != 0) + { + Candy[i] += 1; + total += 1; + } + } + } + cout << total << endl; +} ``` ### B ```cpp - +int main() +{ + int n; + cin >> n; + int *Candy = new int[n]; + for (int i = 0; i < n; i++) + { + cin >> Candy[i]; + } + int total = 0; + while (1) + { + bool flag = true; + for (int i = 1; i < n; i++) + { + if (Candy[0] != Candy[i]) + { + flag = false; + break; + } + } + if (flag == true) + break; + int temp = Candy[n - 1]; + for (int i = n; i >= 0; i--) + { + if (i == 0) + { + Candy[0] = Candy[0] / 2 + temp / 2; + } + else + Candy[i] = Candy[i] / 2 + Candy[i - 1] / 2; + if (Candy[i] % 2 == 0) + { + Candy[i] += 1; + total += 1; + } + } + } + cout << total << endl; +} ``` ### C ```cpp +int main() +{ + int n; + cin >> n; + int *Candy = new int[n]; + for (int i = 0; i < n; i++) + { + cin >> Candy[i]; + } + int total = 0; + while (1) + { + bool flag = true; + for (int i = 1; i < n; i++) + { + if (Candy[0] != Candy[i]) + { + flag = false; + break; + } + } + if (flag == true) + break; + int temp = Candy[n - 1]; + for (int i = n - 1; i >= 0; i--) + { + if (i == 0) + { + Candy[0] = Candy[0] / 2 + temp / 2; + } + else + Candy[i] = Candy[i] / 2 + Candy[i - 1] / 2; + if (Candy[i] % 2 == 0) + { + Candy[i] += 1; + total += 1; + } + } + } + cout << total << endl; +} ``` diff --git a/src/__pycache__/tree.cpython-38.pyc b/src/__pycache__/tree.cpython-38.pyc index c7851d6afef9023d1d3fedf921b1d653f26044a2..58a068be9479b965110581eeb78c80b1d70ad5c2 100644 Binary files a/src/__pycache__/tree.cpython-38.pyc and b/src/__pycache__/tree.cpython-38.pyc differ