Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions BasicLevel_C++/1111.对称日(15).cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#include <iostream>
#include <string>
#include <algorithm>

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;
}

36 changes: 36 additions & 0 deletions BasicLevel_C++/1112.超标区间(20).cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include <iostream>

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;
}

61 changes: 61 additions & 0 deletions BasicLevel_C++/1113.钱串子的加法(20).cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#include <iostream>
#include <string>
#include <algorithm>

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<int>(result.length()); i++) {
if (result[i] != '0') {
index = i;
break;
}
}
for (int i = index; i < static_cast<int>(result.length()); i++)
std::cout << result[i];

return 0;
}

36 changes: 36 additions & 0 deletions BasicLevel_C++/1114.全素日(20).cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include <iostream>
#include <string>
#include <cmath>

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;
}

73 changes: 73 additions & 0 deletions BasicLevel_C++/1115.裁判机(25).cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#include <cstdio>
#include <unordered_map>
#include <set>
#include <vector>

int matrix[15][1005] = {0};
int N, M;
std::unordered_map<int, std::set<int>> number2diff;
bool player[15] = {false};

int main(int argc, char const *argv[]) {
int init1, init2;
std::scanf("%d %d", &init1, &init2);
std::set<int> 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<int> 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<int> 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;
}