【题解】2015.10.17题目

来源:互联网 发布:中国网络教育大学 编辑:程序博客网 时间:2024/06/05 04:09

1  染色(paint

现有W*H的棋盘格子,要在其上用蓝色染其中的一些格子,形成一个蓝色的矩形。由于费用问题,你最多只能染色M个格子,请问你能染色的矩形最大面积是多少?

【输入格式】(paint.in)

   1行:2个整数WH,范围在[1…10^6]

   2行:1个整数M,范围在[1…10^12]

 

【输出格式】(paint.out)

一个整数,可能的矩形最大面积。

 

【输入输出样例】

输入

输出

3  5

14

12

4  4

10

9

1000000  1000000

999999999999

999999000000

 

 【例程】

#include<iostream>
#include<cstdio>
using namespace std;

long long n,m,ans,ge;
long long tmp,now;

int main()
{
freopen("paint.in","r",stdin);
freopen("paint.out","w",stdout);

cin>>n>>m;
cin>>ge;
for(int i=1;i<=n;++i)
{
tmp=ge/i;
if(tmp<=m)
{
now=tmp*i;
if(now>ans)
ans=now;
}
else
{
now=m*i;
if(now>ans)
ans=now;
}
}
cout<<ans<<endl;
return 0;
}




2  飞镖(dart

小明喜欢玩飞镖游戏,他会把每次的得分都记录在数组中。今天有个飞镖大奖,得奖的规则是:如果你4次飞镖的得分先后是(a,b,c,d),满足a*b*c = d

小明准备把记录里的其他项删除,只留下满足获奖条件的4个分数,他想问你有多少种不同方案?

【输入格式】(dart.in)

   1行:1个整数N

   2行:N个整数,每个整数范围在[1…10^6]

 

【输出格式】(dart.out)

一个整数,方案数。

 

【输入输出样例】

输入

输出

6

10  2  2  7  40  160

2

注:(10,2,2,40)(2,2,40,160)

8

128  64  32  16  8  4  2  1

0

21

2  3  4  5  6  8  12  16  20  24  40  24  20  16  12  8  6  5  4  3  2

3

 

N范围】

80%[4…500],

 100%[4…2000]

 

 【例程】

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

long long wei[2001],num[2001];
long long n,ans,tmp;
int ok[1000001];


int main()
{
freopen("dart.in","r",stdin);
freopen("dart.out","w",stdout);

cin>>n;
for(int i=0;i<n;++i)
cin>>num[i];

for(int i=2;i<n-1;++i)//循环 c
{
for(int j=i-2;j>=0;--j)//循环 a
{
tmp=(long long)num[i-1]*num[j];
if(tmp<=100000)
ok[tmp]++;
}
//return 0;
for(int j=i+1;j<n;++j)//循环 d
{
if(num[j]%num[i]==0)
ans+=ok[num[j]/num[i]];
}

}
cout<<ans<<endl;
return 0;
}


 

0 0
原创粉丝点击