C. Joyboard

发布时间 2023-10-09 16:50:42作者: 不o凡

C. Joyboard

找规律我们可以发现:
为了方便对a[n+1]取值为x
1.如果x=0,只有0,k=1
2.如果1<=x<=n,在i<=x,a[i]=0;在i>x ,a[i]=x,k=2
3.如果x>n,需要分类:
3.1 如果x%n==0,i<=n,a[i]=0,a[n+1]=x,k=2
3.2 如果x%n!=0,设y=x%n,i<=y,a[i]=0;y<i<=n ,a[i]=y;a[n+1]=x;

点击查看代码
#include<bits/stdc++.h>
using namespace std;

void solve() {

	int n, m, k;
	cin >> n >> m >> k;
	if (k > 3) {
		cout << "0";
	}
	else if (k == 1) {
		cout << 1;
	}
	else if (k == 2) {
		if (m == 0) cout << 0;
		else if (m >= n) cout << (min(n, m) + m / n - 1);
		else cout << m;
	}
	else {//k==3
		if (m <= n) cout << 0;
		else cout << m - n-m/n+1;//除去m%n==0的情况;因为m-n与m/n会多减一个n,所以要加上1;
	}
	cout << '\n';
}
int main() {
	int t;
	cin >> t;
	while (t--) {
		solve();
	}
}