最大测试数据hdu 4153(数学)最大测试数据

上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下最大测试数据

    点击打开链接

    

    英文欠好,看不懂....

    

    1x1+2/3+3/5+1/3x1/5+0x1/5+0.01可以看成为:3/3x5/5+2/3+3/5+1/3x1/5+0/3x1/5+0.01。

    这样看起来更有法则,在两个分数乘积的中,一个分母是3,另外一个是5。先说为什么是5,从边左的图片可以看出在0-9范围的值最大,就是5。10-19中为3,而3又占5中的3/5。20-29中为1,1占5中的1/5,30-39为1,也占1/5。所以为以什么以5分母的分数就能够求出来了。再说3。。。3/3,2/3,1/3,0,/3好正别分对应0-9,10-19,20-29,30-39。3是由测试数据里头的最大数30除以图像的间距0-9这10个数于等3,因此定确了3是分母,子分再逐级递加。最后在最后的结果下面加上0.01,保存6位数小,就是终最的结果了。

    

    

#include"stdio.h"
#include"string.h"
int main()
{
	int n,m;
	int i;
	int a[101];
	int mark[101];
	int s1,s2;
	int max;
	while(scanf("%d%d",&n,&m)!=-1,n||m)
	{
		memset(mark,0,sizeof(mark));
		max=0;
		for(i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			mark[a[i]/m]++;
			if(max<a[i])max=a[i];//输入的数中最大的数
		}
		s2=max/m;//s2示表可以分的份数。。。
		//s2++;

		max=0;
		for(i=0;i<=s2;i++)
		{
			if(mark[i]>max)//占份数最多。。
				max=mark[i];
		}
		s1=max;


		double ans;
		ans=0.01;
		for(i=0;i<=s2;i++)
		{
			ans+=(i*1.0/s2)*(mark[s2-i]*1.0/s1);
		}
		printf("%.6f\n",ans);
	}
	return 0;
}

文章结束给大家分享下程序员的一些笑话语录: 大家喝的是啤酒,这时你入座了。
你给自己倒了杯可乐,这叫低配置。
你给自已倒了杯啤酒,这叫标准配置。
你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。
你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。
你的同事给你倒了杯白酒,这叫推荐配置。
菜过三巡,你就不跟他们客气了。
你向对面的人敬酒,这叫p2p。
你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp。
你向一桌人挨个敬酒,这叫令牌环。
你说只要是兄弟就干了这杯,这叫广播。
有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。
你的小弟们过来敬你酒,这叫一对多。
你是boss,所有人过来敬你酒,这叫服务器。
酒是一样的,可是喝酒的人是不同的。
你越喝脸越红,这叫频繁分配释放资源。
你越喝脸越白,这叫资源不释放。
你已经醉了,却说我还能喝,叫做资源额度不足。
你明明能喝,却说我已经醉了,叫做资源保留。
喝酒喝到最后的结果都一样
你突然跑向厕所,这叫捕获异常。
你在厕所吐了,反而觉得状态不错,这叫清空内存。
你在台面上吐了,觉得很惭愧,这叫程序异常。
你在boss面前吐了,觉得很害怕,这叫系统崩溃。
你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

原文地址:https://www.cnblogs.com/javawebsoa/p/3032132.html