CFB「div3」

Проблема - B - Codeforces

Codeforces Round #776 (Div. 3) - Codeforces

Во время соревнований я не мог решить эту задачу, сначала думал использовать две точки, но когда сделал это позже, то обнаружил, что референса нет, поэтому две точки не допускаются.

Затем начните делать это, думая, если еще, но при поиске последнего наибольшего числа напрямую применяйте перечисление «в крайних случаях должно истечь время», вместо того, чтобы напрямую получать это число.

Код переменного тока:

#include <iostream>
#include <cmath>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#define int long long
using namespace std;
const int N = 1e4+10;
int n;
bool st[N];
int l,r,a;


signed main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld%lld%lld",&l,&r,&a);
		int res=0;
		//两个都考虑
		if(r%a==a-1){
			int val = r / a + r % a;
			cout<<val<<endl;
		}
		else if(l/a==r/a&&l%a<=r%a){
			int val = r / a + r % a;
			cout<<val<<endl;
		}
		//后面才进行比对,分析的时候不能直接用a与l和r的关系
		else if(l/a!=r/a&&l%a<=r%a){
			int val = r / a + r % a;
			val = max(val,a-1ll+r/a-1ll);
			cout<<val<<endl;
		}else{
			int val = r / a + r % a;
			val = max(val,a-1ll+r/a-1ll);
			cout<<val<<endl;
		}
	}
	return 0;
}

рекомендация

отblog.csdn.net/weixin_60789461/article/details/123367669
рекомендация