原題:
http://172.16.0.132/senior/#contest/show/2041/0
題目描述:
雞腿是CZYZ的著名DS,但是不想學(xué)數(shù)學(xué)的DS不是好GFS,所以雞腿想通過(guò)提高數(shù)學(xué)水平來(lái)增強(qiáng)他的GFS氣質(zhì)!雖然你對(duì)雞腿很無(wú)語(yǔ),但是故事的設(shè)定是你幫助雞腿增強(qiáng)了GFS氣質(zhì),所以現(xiàn)在你必須教雞腿學(xué)數(shù)學(xué)!
雞腿想到了一個(gè)很高(sha)明(bi)的問(wèn)題,在 N 條水平線與 M 條豎直線構(gòu)成的網(wǎng)格中,放 K 枚石子,每個(gè)石子都只能放在網(wǎng)格的交叉點(diǎn)上。問(wèn)在最優(yōu)的擺放方式下,最多能找到多少四邊平行于坐標(biāo)軸的長(zhǎng)方形,它的四個(gè)角上都恰好放著一枚石子。
輸入:
一行輸入三個(gè)正整數(shù)N,M,K。
輸出:
一行輸出一個(gè)正整數(shù),表示最多的滿(mǎn)足條件的長(zhǎng)方形數(shù)量。
樣例輸入:
輸入1:
3 3 8
輸入2:
7 14 86
樣例輸出:
輸出1:
5
輸出2:
1398
數(shù)據(jù)范圍限制:
對(duì)于50%的數(shù)據(jù)0 < N, M ≤ 30;
對(duì)于100%的數(shù)據(jù)0 < N, M ≤ 30000;K ≤ N*M。
分析:
這是一道純數(shù)學(xué)題目,(沒(méi)AC得都不知道他們?cè)谙胄┦裁?....((/- -)/);
通過(guò)分析,我們不難得出一個(gè)公式:C(k/i,2)C(i,2)+C(k%i,2)k/i;
實(shí)現(xiàn):
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
int i,x,n,m,k;
long long ans;
long long calc(int x) {return (x-1)*x/2;}
long long work(int x,int y) {return calc(x)*calc(y)+(y<m?y:x)*calc(k-x*y);}
int main()
{
freopen("rectangle.in","r",stdin);freopen("rectangle.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
if(n>m) swap(n,m);
ans=0;
for(i=2;i<=min(n,(int)sqrt(k));i++)
{
x=min(m,k/i);
if(k>=x*(i+1)) continue;
ans=max(ans,work(i,x));
}
printf("%lld\n",ans);
}