Problem - E - Codeforces
解读
在解决 Ntarsis 放置秘密盒子 S 的问题时,我们需要找到在给定的盒子 B 中,能够放置多少个边长为整数、体积为 k 的秘密盒子 S 的最大可能位置数量。
同时满足条件:
- S 的每个边长必须是正整数。
- S 的体积必须是 k。
- S 的每个顶点必须位于整数坐标上
当x=3,y=3,z=3,k=8:
对于位置 (0, 0, 0),S占用空间(2,2,2),通过(3-2+1, 3-2+1,3 -2+1)得;
所以放置盒子 S 后剩余的空间是 (3 - 2 + 1, 3 - 2 + 1, 3 - 2 + 1)
,即 (2, 2, 2)
数量为 2*2*2 = 8
ac代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
int main()
{
IOS;
int T;
cin>>T;
while(T--)
{
ll ans = 0;
int x,y,z;
ll k;
cin>>x>>y>>z>>k;
for(int a=1;a<=x;a++)
{
for(int b=1;b<=y;b++)
{
if(k % (a * b)) continue;
ll c = k / (a * b);
if(c > z) continue;
ll num = (ll)(x-a+1)*(y-b+1)*(z-c+1);
ans = max(ans,num);
}
}
cout<<ans<<endl;
}
return 0;
}