CF 1877 C

发布时间 2023-10-10 20:01:01作者: 铜锣骚

C. Joyboard

这道题需要进行分类讨论。

  • \(k=1\)时,即构造的数组中所有元素皆为\(0\)才成立,所以输出\(1\)
  • \(k=2\)时,只有\(a[n+1]<=n\)\(a[n + 1]=x\)(其中\(n|x\))才成立,所以答案是\(n+\lfloor \frac{n+m}{n} \rfloor\)\((m>n)\)
  • \(k=3\)时,只有\(a[n+1]>n\)\(a[n + 1]\neq x\)时才成立,所以答案是\(m-n-\lfloor \frac{n+m}{n} \rfloor\)\((m>n)\)

代码

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef pair<ll, ll> PII;

const ll N = 1e5 + 10;
ll t;
ll n, m, k;

signed main()
{
    std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> t;
    while(t--)
    {
        cin >> n >> m >> k;
        if(k > 3)
        {
            cout << 0 << endl;
        }
        else if(k == 3)
        {
            if(m > n)
            {
                cout << m - n - (m - n) / n << endl;
            }
            else
            {
                cout << 0 << endl;
            }
        }
        else if(k == 2)
        {
            if(m > n)
            {
                cout << n + (m - n) / n << endl;
            }
            else
            {
                cout << m << endl;
            }
        }
        else if(k == 1)
        {
            cout << 1 << endl;
        }
    }
    return 0;
}