本蒟的第二篇题解:
终于能拿一点社区贡献的分了,争取红名
先吐槽一下这个题目背景的优美的中国话
其实这道题有两个主要的解法(DP和数学方法):
讲一下数学方法(用DP做这道题简直是大材小用了其实是我不会):
对于n×m的石子长方形,我们可以得到(记答案为sum):
sum(n,m)= n(n+1)×m(m+1)/4
这样子慢慢递推就可以了
AC代码奉上:
include <bits/stdc++.h>
using namespace std;
long long N,M,K,ans;
int main(){
cin>>N>>M>>K;
if(N>M)swap(N,M);
for(long long i = 1;i<=K&&i<=N;i++){
if((K%i==0&&K/i>M)||(K%i!=0&&K/i>M-1)){continue;}
long long x = K/i,y = K%i;
ans = max(ans,x*(x-1)/2*i*(i-1)/2+y*(y-1)/2*x);
}
cout<<ans;
return 0;
}
留个赞赞再走呗?