[BOJ/C, C++] 逐步解题 / 输入输出与四则运算 ~ 一维数组

发布: (2026年1月1日 GMT+8 15:49)
3 min read
原文: Dev.to

Source: Dev.to

1008题 A/B

题目链接

#include 

int main() {
    double A, B;
    scanf("%lf %lf", &A, &B);
    printf("%.9lf", A / B);
}

输出小数点后9位以上即可确保安全。float只能精确表示约6位,因此使用了double

C++ 实现

#include 
#include 

int main() {
    double A, B;
    std::cin >> A >> B;
    std::cout 

额外时间计算(示例代码)

int main() {
    int A, B, C;
    scanf("%d %d %d", &A, &B, &C);
    B += C;               // 将额外时间以分钟加到 B
    A += B / 60;          // 超过60分钟时增加小时
    B %= 60;              // 剩余的分钟
    printf("%d %d", A >= 24 ? A - 24 : A, B);
}

将额外时间 C 以分钟为单位相加,并利用除以60的余数来计算小时和分钟。


15552题 快速 A+B

题目链接

#include 

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int T;
    std::cin >> T;
    while (T--) {
        int A, B;
        std::cin >> A >> B;
        std::cout 
int main() {
    while (true) {
        int A, B;
        std::cin >> A >> B;
        if (std::cin.eof()) break;
        std::cout 
int main() {
    int A, B;
    while (std::cin >> A >> B) {
        std::cout > X` 遇到非 `int` 的值时会返回 `false`,因此可以像上面那样使用。

10818题 最小值、最大值

题目链接

1. 不使用数组的方法

#include 

int main() {
    int N;
    std::cin >> N;
    int maximum = -1000001, minimum = 1000001;
    while (N--) {
        int temp;
        std::cin >> temp;
        maximum = (temp > maximum) ? temp : maximum;
        minimum = (temp 

2. 使用动态数组(排序前)

#include 

int main() {
    int N;
    std::cin >> N;
    int* arr = new int[N];
    for (int i = 0; i > arr[i];
    std::cout 

3. 使用动态数组(排序后)

#include 

int main() {
    int N;
    std::cin >> N;
    int* arr = new int[N];
    for (int i = 0; i > arr[i];
    std::sort(arr, arr + N);
    std::cout 

4. 使用取余运算的问题(示例)

#include 

int main() {
    bool seen[42] = { false };
    int cnt = 0;
    for (int i = 0; i > t;
        t %= 42;
        if (!seen[t]) {
            seen[t] = true;
            ++cnt;
        }
    }
    std::cout 

5. 区间翻转(示例)

#include 

int main() {
    int N, M;
    std::cin >> N >> M;
    int* arr = new int[N + 1];
    for (int i = 1; i > i >> j;
        std::reverse(arr + i, arr + j + 1);
    }

    for (int i = 1; i <= N; ++i) {
        std::cout << arr[i] << ' ';
    }
    delete[] arr;
}

std::reverse 用于翻转区间 [i, j]。篮子从 1 开始,因此不使用索引 0。

Back to Blog

相关文章

阅读更多 »

MiniScript 2026 路线图

2026 展望 随着 2025 接近尾声,是时候展望 2026 了!MiniScript 已经八岁。许多编程语言真的进入了它们的……