diff --git "a/BasicLevel_C++/1111.\345\257\271\347\247\260\346\227\245(15).cpp" "b/BasicLevel_C++/1111.\345\257\271\347\247\260\346\227\245(15).cpp" new file mode 100644 index 0000000..8519441 --- /dev/null +++ "b/BasicLevel_C++/1111.\345\257\271\347\247\260\346\227\245(15).cpp" @@ -0,0 +1,68 @@ +#include +#include +#include + +int judge(const std::string& s) { + int length = s.length(); + for (int i = 0; i < length; i++) { + if (s[i] != s[length - i - 1]) + return 0; + } + return 1; +} + +int main() { + int n; + std::cin >> n; + + std::string m[13] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; + + std::string mon; + int day, month, year; + + for (int i = 0; i < n; i++) { + std::cin >> mon; + std::scanf("%d, %d", &day, &year); + + // Finding month + for (int j = 0; j < 13; j++) { + if (m[j] == mon) { + month = j + 1; + break; + } + } + + std::string date; + if (100 <= year && year < 1000) { + date += "0"; + date += std::to_string(year); + } else if (10 <= year && year < 100) { + date += "00"; + date += std::to_string(year); + } else if (year < 10) { + date += "000"; + date += std::to_string(year); + } else { + date += std::to_string(year); + } + + if (month < 10) { + date += "0"; + } + date += std::to_string(month); + + if (day < 10) { + date += "0"; + } + date += std::to_string(day); + + if (judge(date) == 1) { + std::cout << "Y " << date << std::endl; + } else { + std::cout << "N " << date << std::endl; + } + } + + return 0; +} + diff --git "a/BasicLevel_C++/1112.\350\266\205\346\240\207\345\214\272\351\227\264(20).cpp" "b/BasicLevel_C++/1112.\350\266\205\346\240\207\345\214\272\351\227\264(20).cpp" new file mode 100644 index 0000000..273c299 --- /dev/null +++ "b/BasicLevel_C++/1112.\350\266\205\346\240\207\345\214\272\351\227\264(20).cpp" @@ -0,0 +1,36 @@ +#include + +int main() { + int N, T; + std::cin >> N >> T; + int left = 0, right = 0, maxNum = -1; + int temp, flag = false; + + for (int i = 0; i < N; i++) { + std::cin >> temp; + maxNum = std::max(maxNum, temp); + if (temp > T && flag) { + right = i; + } else if (temp > T && !flag) { + left = right = i; + flag = true; + } else if (temp <= T && flag) { // 注意是 "<="! + std::cout << "[" << left << ", " << right << "]" << std::endl; + flag = false; + maxNum = 1001; + } + } + + // 如果循环结束,还在计数区间内,也要输出 + if (flag) { + std::cout << "[" << left << ", " << right << "]" << std::endl; + return 0; + } + + if (maxNum < 1001) { + std::cout << maxNum; + } + + return 0; +} + diff --git "a/BasicLevel_C++/1113.\351\222\261\344\270\262\345\255\220\347\232\204\345\212\240\346\263\225(20).cpp" "b/BasicLevel_C++/1113.\351\222\261\344\270\262\345\255\220\347\232\204\345\212\240\346\263\225(20).cpp" new file mode 100644 index 0000000..68f3722 --- /dev/null +++ "b/BasicLevel_C++/1113.\351\222\261\344\270\262\345\255\220\347\232\204\345\212\240\346\263\225(20).cpp" @@ -0,0 +1,61 @@ +#include +#include +#include + +int main() { + std::string a, b; + std::cin >> a >> b; + char m[31] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', + 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't' + }; + + int len1 = a.length(); + int len2 = b.length(); + std::string s; + if (len1 > len2) { + for (int i = 0; i < len1 - len2; i++) + s += "0"; + b = s + b; + } else { + for (int i = 0; i < len2 - len1; i++) + s += "0"; + a = s + a; + } + int len = a.length(); + std::reverse(a.begin(), a.end()); + std::reverse(b.begin(), b.end()); + int k = 0; + std::string result = ""; + int carry = 0; + while (k < len) { + int x1, x2; + for (int i = 0; i < 31; i++) { + if (m[i] == a[k]) + x1 = i; + if (m[i] == b[k]) + x2 = i; + } + int sum = x1 + x2 + carry; + if (sum >= 30) { + carry = 1; + sum = sum - 30; + } else { + carry = 0; + } + result += m[sum]; + k++; + } + std::reverse(result.begin(), result.end()); + int index = 0; + for (int i = 0; i < static_cast(result.length()); i++) { + if (result[i] != '0') { + index = i; + break; + } + } + for (int i = index; i < static_cast(result.length()); i++) + std::cout << result[i]; + + return 0; +} + diff --git "a/BasicLevel_C++/1114.\345\205\250\347\264\240\346\227\245(20).cpp" "b/BasicLevel_C++/1114.\345\205\250\347\264\240\346\227\245(20).cpp" new file mode 100644 index 0000000..99f00a8 --- /dev/null +++ "b/BasicLevel_C++/1114.\345\205\250\347\264\240\346\227\245(20).cpp" @@ -0,0 +1,36 @@ +#include +#include +#include + +int isPrime(int n) { + if (n < 2) + return 0; + for (int i = 2; i <= std::sqrt(n); i++) { + if (n % i == 0) + return 0; + } + return 1; +} + +int main() { + std::string date; + std::cin >> date; + int length = date.length(); + std::string s; + int flag = 0; + for (int i = 0; i < length; i++) { + s = date.substr(i, length - i); + int number = std::stoi(s); + if (isPrime(number) == 1) { + std::cout << s << " " << "Yes" << std::endl; + } else { + flag = 1; + std::cout << s << " " << "No" << std::endl; + } + } + if (flag == 0) + std::cout << "All Prime!"; + + return 0; +} + diff --git "a/BasicLevel_C++/1115.\350\243\201\345\210\244\346\234\272(25).cpp" "b/BasicLevel_C++/1115.\350\243\201\345\210\244\346\234\272(25).cpp" new file mode 100644 index 0000000..15af16b --- /dev/null +++ "b/BasicLevel_C++/1115.\350\243\201\345\210\244\346\234\272(25).cpp" @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +int matrix[15][1005] = {0}; +int N, M; +std::unordered_map> number2diff; +bool player[15] = {false}; + +int main(int argc, char const *argv[]) { + int init1, init2; + std::scanf("%d %d", &init1, &init2); + std::set st1, st2; + if (init1 > init2) + st1.insert(init1 - init2); + else + st2.insert(init2 - init1); + number2diff.insert({init1, st1}); + number2diff.insert({init2, st2}); + std::scanf("%d %d", &N, &M); + for (int i = 1; i <= N; i++) + for (int j = 1; j <= M; j++) + std::scanf("%d", &matrix[i][j]); + for (int j = 1; j <= M; j++) { + for (int i = 1; i <= N; i++) { + int tmp = matrix[i][j]; + if (player[i] == true) continue; + if (number2diff.find(tmp) != number2diff.end()) { + std::printf("Round #%d: %d is out.\n", j, i); + player[i] = true; + } else { + bool flag = false; + for (auto &p : number2diff) { + auto it = p.second.lower_bound(tmp); + if (it != p.second.end() && *it == tmp) { + flag = true; + break; + } + } + if (!flag) { + std::printf("Round #%d: %d is out.\n", j, i); + player[i] = true; + } else { + std::set st; + for (auto &p : number2diff) { + if (p.first < tmp) + st.insert(tmp - p.first); + } + number2diff.insert({tmp, st}); + for (auto &p : number2diff) { + if (p.first > tmp) { + p.second.insert(p.first - tmp); + } + } + } + } + } + } + std::vector winner; + for (int i = 1; i <= N; i++) { + if (player[i] == false) winner.push_back(i); + } + if (winner.size() == 0) + std::printf("No winner.\n"); + else { + std::printf("Winner(s):"); + for (int &i : winner) + std::printf(" %d", i); + } + return 0; +} +