4652. 纸张尺寸

摘要
Title: 4652. 纸张尺寸
Tag: dfs
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

4652. 纸张尺寸

  • 题意

    在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm×841mm,将 A0 纸沿长边对折后为 A1 纸,大小为 841mm×594mm,在对折的过程中长度直接取下整(实际裁剪时可能有损耗)。
    将 A1 纸沿长边对折后为 A2 纸,依此类推。
    输入纸张的名称,请输出纸张的大小。

  • 思路

    dfs即可,dfs时将l,r的地址传过去,随dfs变化值

  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    /*
    * @Author: NEFU AB-IN
    * @Date: 2023-01-06 09:30:59
    * @FilePath: \Acwing\4652\4652.cpp
    * @LastEditTime: 2023-01-06 09:47:43
    */
    #include <bits/stdc++.h>
    using namespace std;
    #define N n + 100
    #define int long long
    #define SZ(X) ((int)(X).size())
    #define IOS \
    ios::sync_with_stdio(false); \
    cin.tie(nullptr); \
    cout.tie(nullptr)
    #define DEBUG(X) cout << #X << ": " << X << '\n'
    typedef pair<int, int> PII;

    // #undef N
    // const int N = 1e5 + 10;

    // #undef int
    int l = 1189, r = 841;

    signed main()
    {
    IOS;
    string s;
    cin >> s;
    int n = s[1] - '0';
    function<void(int, int &, int &)> dfs = [&](int n, int &l, int &r) {
    if (!n)
    return;
    if (l > r)
    l /= 2, dfs(n - 1, l, r);
    else
    r /= 2, dfs(n - 1, l, r);
    };

    dfs(n, l, r);

    cout << max(l, r) << '\n' << min(l, r);
    return 0;
    }
使用搜索:谷歌必应百度