- UID
- 203120
- 在线时间
- 0 小时
- 最后登录
- 2014-5-5
- 注册时间
- 2012-8-23
- 宅魂
- 229 点
- 贡献
- 33 点
- 宅币
- 4597 枚
- 灵石
- 0 块
- 元气(技能点)
- 0 点
- 活跃
- 0 ℃
- 听众
- 4
- 收听
- 0
该用户从未签到
序章
- 积分
- 5383
|
发表于 2013-4-7 10:16:04
|
显示全部楼层
本帖最后由 绯色基 于 2013-4-7 10:18 编辑
这是我在网上看到的第二题,自测无错
所以我想问sqrt(K*1.0)那里为什么要赋这个值?
[mw_shl_code=applescript,true]#include<cstdio>
#include <math.h>
#include <stdlib.h>
#include "string.h"
int main()
{
int T, t;
scanf("%d",&T);
t = 1;
while (t <= T)
{
int N, M, K;
scanf("%d%d%d",&N,&M,&K);
int result = 0;
if (N > M) // 令M>N
{
int tmp = N;
N = M;
M = tmp;
}
int n1 = int(sqrt(K*1.0)), n2 = M;
n1 = n1 > N ? N : n1;
for (; n1 * n2 > K; --n2);
int max = 0;
while (n1 >= 2 && n2 <= M)
{
int k = K;
result += ( n1 * (n1 - 1) * n2 * (n2 - 1) )/4;
k -= n1 * n2;
if (n2 < M)
result += n2 * (k * (k - 1) / 2);
else
result += n1 * (k * (k - 1) / 2);
max = result > max ? result : max;
// 修改n1,n2
--n1;
n2 = K / n1;
result = 0;
}
printf("Case #%d: %d",t,max);
printf("\n");
++t;
}
return 0;
}[/mw_shl_code]
|
|