题解:P13678 [GCPC 2023] Mischievous Math

题解:P13678 [GCPC 2023] Mischievous Math

Link

挺有意思的题。

我们的策略如下:

  • 对于一个较大的数,使构造出来的数尽可能小;
  • 对于一个较小的数,使构造出的数字尽可能大即可。

所以,当 \(d \ge10\) 是,显然数字 \(a=1,b=2,c=3\) 符合条件。因为无论怎么使用这三个数和运算符,最大的数只能是 \(9\)

对应的,当 \(0 < d < 10\) 时,那么 \(1-100\) 中三个最大的自然数 \(a=100,b=99,c=98\) 显然符合条件。

但是注意 \(1\)\(2\) 要特判,因为 \(a-b=100-99=1\)\(a-c=100-98=2\)。这两组显然不符合条件。

这时我们可以分别找到 \(a=100,b=98,c=96\)\(a=100,b=99,c=96\)

代码实现

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll d;
int main(){
	cin>>d;
	if(d>=10) cout<<1<<" "<<2<<" "<<3<<" ";
	else{
		if(d==1) cout<<100<<" "<<98<<" "<<96<<" ";
		else if(d==2) cout<<100<<" "<<99<<" "<<96<<" ";
		else cout<<100<<" "<<99<<" "<<98<<" ";
	}
	return 0;
}
posted @ 2025-08-12 23:43  M1_Byte  阅读(11)  评论(0)    收藏  举报