引言:两年没写博客了,两年来经历了很多的事情,太多太多,无法说清(;′⌒`)。无论如何生活还要继续,当前计划从杭电OJ开始记录我的痕迹(ง •_•)ง。
(如有错误,欢迎指正o( ̄▽ ̄)ブ)
目录
2030 (汉字统计)
#include <iostream>
#include <string>
using namespace std;
//汉字机内码使用2个字节,最高位为1,补码表示为负数
int main() {
int len;
cin >> len;
string s;
getline(cin, s);
while (getline(cin, s)) {
int count = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] < 0) {
count++;
}
}
cout << (count / 2) << endl;
}
}
2031 (进制转换)
#include <iostream>
using namespace std;
void convert(int n, int r) {
if (n > r) {
convert(n / r, r);
n = n % r;
}
if (n >= 0 && n <= 9) cout << n;
else if (n == 10) cout << "A";
else if (n == 11) cout << "B";
else if (n == 12) cout << "C";
else if (n == 13) cout << "D";
else if (n == 14) cout << "E";
else if (n == 15) cout << "F";
}
//用一个递归或者栈迭代即可实现
int main() {
int n, r;
while (cin >> n >> r) {
if (n < 0) {
cout << "-";
n = abs(n);
}
convert(n, r);
cout << endl;
}
}
2032 (杨辉三角)
#include <iostream>
using namespace std;
//核心思路:arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]
int main() {
int n;
int arr[30][30];
while (cin >> n) {
for (int j = 0; j < n; j++) {
for (int i = 0; i < n; i++) {
if (j == 0) arr[i][j] = 1;
else if (i < j) arr[i][j] = 0;
else arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (arr[i][j] == 0) break;
if (j > 0) cout << " ";
cout << arr[i][j];
}
cout << endl;
}
cout << endl;
}
}
2033 (人见人爱A+B)
#include <iostream>
using namespace std;
int main() {
int ah, am, as, bh, bm, bs, len;
while (cin >> len) {
for (int i = 0; i < len; i++) {
scanf("%d%d%d%d%d%d", &ah, &am, &as, &bh, &bm, &bs);
int h = ah + bh, m = am + bm, s = as + bs;
if (s >= 60) {
m += s / 60;
s %= 60;
}
if (m >= 60) {
h += m / 60;
m %= 60;
}
printf("%d %d %d\n", h, m, s);
}
}
}
2034 (人见人爱A-B)
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int n, m;
int listN[100], listM[100];
while (cin >> n >> m) {
if (n == 0 && m == 0) break;
//输入
for (int i = 0; i < n; i++) cin >> listN[i];
for (int i = 0; i < m; i++) cin >> listM[i];
//排序,方便使用双指针
sort(listN, listN + n);
sort(listM, listM + m);
int pointerN = 0, pointerM = 0;
bool isPrintf = false;
//类似于归并排序的写法
while (pointerN < n && pointerM < m) {
if (listN[pointerN] == listM[pointerM]) pointerN++;
else if (listN[pointerN] <= listM[pointerM]) {
if (isPrintf) cout << " ";
cout << listN[pointerN];
pointerN++;
isPrintf = true;
}
else pointerM++;
}
while (pointerN < n) {
if (isPrintf) cout << " ";
cout << listN[pointerN];
pointerN++;
isPrintf = true;
}
if (!isPrintf) cout << "NULL";
cout << endl;
}
}
2035 (人见人爱A^B)
#include <iostream>
using namespace std;
//思路:直接求幂函数非常容易值溢出,既然只输出最后三位,不妨只取三位数用连乘,每次对结果取余1000
int main() {
int a, b;
while (cin >> a >> b) {
if (a == 0 && b == 0) break;
a %= 1000;
int result = 1;
for (int i = 0; i < b; i++) {
result = result * a % 1000;
}
cout << result << endl;
}
}
2036 (改革春风吹满地)
#include <vector>
#include <iostream>
using namespace std;
struct Coordinate
{
int x;
int y;
Coordinate(int val1, int val2) : x(val1), y(val2) {}
};
//计算三角形面积公式:s = 0.5*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);
int main() {
int count;
vector<Coordinate> list;
while (cin >> count) {
if (count == 0) break;
for (int i = 0; i < count; i++) {
int x, y;
cin >> x >> y;
list.push_back(Coordinate(x, y));
}
double s = 0;
for (int i = 1; i < count - 1; i++) {
s += 0.5 * (list[0].x * list[i].y + list[i].x * list[i + 1].y + list[i + 1].x * list[0].y - list[0].x * list[i + 1].y - list[i].x * list[0].y - list[i + 1].x * list[i].y);
}
printf("%.1lf\n", s);
list.clear();
}
}
2037 (今年暑假不AC)
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
struct Program {
int startTime;
int endTime;
Program (int val1, int val2) : startTime(val1), endTime(val2) {}
};
//从查看最早结束的电视节目往后遍历
int main() {
int count;
vector<Program> programList;
while (cin >> count) {
if (count == 0) break;
//记录数据
for (int i = 0; i < count; i++) {
int val1, val2;
cin >> val1 >> val2;
programList.push_back(Program(val1, val2));
}
//根据结束时间排序
sort(programList.begin(), programList.end(), [](const Program& a, const Program& b) {
return a.endTime < b.endTime;
});
int endTime = programList[0].endTime, res = 1;
for (int i = 1; i < count; i++) {
if (programList[i].startTime >= endTime) {
endTime = programList[i].endTime;
res++;
}
}
cout << res << endl;
programList.clear();
}
}
2038 (Miss)
2039 (三角形)
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int len;
while (cin >> len) {
double arr[3];
for (int i = 0; i < len; i++) {
cin >> arr[0] >> arr[1] >> arr[2];
sort(arr, arr + 3);
if (arr[0] + arr[1] <= arr[2] || arr[0] <= 0) cout << "NO" << endl;
else cout << "YES" << endl;
}
}
}

3258

被折叠的 条评论
为什么被折叠?



