NEUACM新生选拔(笔试)试题及答案
一段高速公路上,30分钟之内见到汽车经过的概率是0.973,那么在10分钟之内见到汽车经过的概率是多少?(某厂的面试题)
答案: 这题的关键在于0.973是见到一辆或多辆汽车的概率,而不是仅见到一辆汽车的概率。在30分钟内,见不到任何车辆的概率为0.027。因此在10分钟内见不到任何车辆的概率是这个值的立方根,而在10分钟内见到一辆车的概率则为1减去此立方根,也就是0.7。
Lbyang在玩一个回合制游戏,他所控制的角色ZS将与8个敌人进行战斗,ZS的攻击力为1,生命值无限,敌人的战斗力和生命值如下。每轮攻击,所有生命值大于0的敌人先对ZS造成伤害,敌人的攻击力不随生命值减少而降低,所有敌人攻击结束后,ZS将任意选择其中一个敌人进行攻击。求ZS所耗费的最少的生命值。
测试数据:
1
8
49 73
58 30
72 44
78 23
9 40
65 92
42 87
3 27
代码:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<cstdio>
using namespace std;
struct node{
double att;
double val;
double lev;
}enemy[11];
bool cmp(node a,node b)
{
return a.lev>b.lev;
}
int main()
{
int i,t,n,ans,s;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
s=0;
for(i=0;i<n;i++)
{
scanf("%lf%lf",&enemy[i].att,&enemy[i].val);
enemy[i].lev=enemy[i].att/enemy[i].val;
s+=enemy[i].att;
}
sort(enemy,enemy+n,cmp);
ans=0;
for(i=0;i<n;i++)
{
while(enemy[i].val>0)
{
ans+=s;
enemy[i].val--;
}
s-=enemy[i].att;
}
printf("%d\n",ans);
}
return 0;
}
答案:贪心问题, 按 攻击力/生命值 的结果从大到小排序 ,顺序是4 2 3 6 1 7 5 8
结果是 56382
请简述你所能想到的 N!% M 的最优的解法
答案:
简单点的做法 是 先判断 n,m的大小 如果n>=m结果必然是0 然后就是直接乘 边乘边取模…