不会的往这里看
查看原帖
不会的往这里看
1417016
NOI_AC_楼主2024/10/13 17:59
#include<bits/stdc++.h>

using namespace std;

int main(){

	ios::sync_with_stdio(false);//留加速
	cin.tie(0), cout.tie(0);//这个也是留加速
	int T; cin >> T;
	long long n, k;//0 ≦ n,k ≦ 10¹⁴
	while(T--){
		cin >> n >> k;
		if(n == 0){//被除数等于0,虽然没有这种情况
			cout << 1 << '\n';
			continue;
		}
		if(k == 0){//商等于0
			cout << 1 << '\n';
			continue;
		}
		cout << max(n / (k + 1), n / k) - min(n / (k + 1), n / k) << '\n';
           /*10/2=5......0   10/(2+1)=3......1
           其中除以2和除以(2+1)算的是商为2的区间,
           除数不同,余数也就不同,用大值减去小值后,就可以算出区间的余数了
           因为时间限制为1.00s,暴力肯定超时,
           运用小学学过的知识,还是很容易理解的。
           最后不要忘了换行,'\n'会更快。*/
	}
	return 0;
}

2024/10/13 17:59
加载中...