这是一道代码量很少的题,意思是给你一个区间和一个m,让你找出其中一个符合条件的 a , b, c,使得 存在 n * a + b - c == m 。我们可以先找到符合条件的a,使得 m 与 a的倍数的距离再 0 到 r - l 的范围内,这样我们就可以很容易的构造出来a,b,c(注意 m < a)的情况。虽然这道题的代码量很短,但是需要注意好多细节,wa了好多次QvQ
题目:
ac代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
typedef long long int LL;
int main()
{
int t;
cin >> t;
while (t--)
{
LL n , l , r;
LL a , b , c ;
cin >> l >> r >> n ;
a = l ;
while(n % a > r - l && (a - n % a) > r - l)
{
a++;
}
// cout << a <<' '<< n<<' '<< a - (n % a)<<endl;
if(a > n || a - (n % a) <= r - l )
{
n = a - (n % a);
c = r;
b = r - n;
cout << a <<' '<< b <<' '<<c<<endl;
continue;
}
n %= a;
b = r ;
c = r - n;
cout << a <<' '<< b <<' '<< c <<endl;
}
return 0;
}