题解:P14789 [NERC 2025] Honey Cake
Nottingham_Forest · · 题解
题目传送门
思路
这题我们可以从
我们可以先预处理出
注意要判断高不是整数块的情况。
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int w,h,d,n,a[10000005],cnt;
signed main(){
cin>>w>>h>>d>>n;
for(int i=1;i<=(int)(sqrt(n));i++)
{
if(n%i==0)
{
a[++cnt]=i;
if(i*i!=n) a[++cnt]=n/i;
}
}
sort(a+1,a+cnt+1);//预处理因数
for(int i=1;i<=cnt;i++)
{
for(int j=1;j<=cnt;j++)
{
if(n%(a[i]*a[j])!=0) continue;//判断高是否是整数块
if(w%a[i]==0&&h%a[j]==0&&d%(n/a[i]/a[j])==0&&n%(a[i]*a[j])==0)
{
cout<<a[i]-1<<" "<<a[j]-1<<" "<<(n/a[i]/a[j])-1;
return 0;
}//判断符不符合蜂蜜蛋糕尺寸
}
}
cout<<-1;//无解
return 0;
}