Codeforces Round 674 (Div. 3) 解题报告

CF1426A Floor Number

Codeforces Round 674 (Div. 3) 第一题,签到题。

题意翻译

  • 除第一层有 \( 1 , 2 \) 两个房间外,其余层皆有 \( x \) 个房间。这些房间的门牌号从第一层起逐层递增。
  • 给出 \( n \) 和 \( x \),求出门牌号为 \( n \) 的房间在第几层。
  • 数据组数 \( t \leq 10 ^ 3 \),\( 1 \leq n , x \leq 10 ^ 3 \)。

题解

不难发现,答案为
\[ \left\lceil \frac { n – 2 } { x } \right\rceil + 1 \]

#include <bits/stdc++.h>
using namespace std;
#define reg register
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1++)
static char buf[100000], *p1 = buf, *p2 = buf;
inline int read(void)
{
    reg char ch = getchar();
    reg int res = 0;
    while (ch < '0' || '9' < ch)
        ch = getchar();
    while ('0' <= ch && ch <= '9')
        res = 10 * res + ch - '0', ch = getchar();
    return res;
}

int n, x;

int main(void)
{
    reg int t = read(); //读入数据组数
    while (t--)         //解决每组数据
    {
        n = read() - 2, x = read(); //读入 n,x
        if (n <= 0)
            puts("1"); //如果 n<=2,那么答案为 1
        else
            printf("%d\n", n / x + (n % x != 0) + 1); //向上取整除法要注意整除的情况
    }
    return 0;
}
Pages: 1 2 3 4 5 6 7 8