您的位置:首页 > 其它

杭电acm2048神、上帝以及老天爷

2014-12-26 10:00 127 查看


神、上帝以及老天爷

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 24251 Accepted Submission(s): 10131



Problem Description

HDU 2006'10 ACM contest的颁奖晚会隆重开始了!

为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的:

首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中;

然后,待所有字条加入完毕,每人从箱中取一个字条;

最后,如果取得的字条上写的就是自己的名字,那么“恭喜你,中奖了!”

大家可以想象一下当时的气氛之热烈,毕竟中奖者的奖品是大家梦寐以求的Twins签名照呀!不过,正如所有试图设计的喜剧往往以悲剧结尾,这次抽奖活动最后竟然没有一个人中奖!

我的神、上帝以及老天爷呀,怎么会这样呢?

不过,先不要激动,现在问题来了,你能计算一下发生这种情况的概率吗?

不会算?难道你也想以悲剧结尾?!

Input

输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(1<n<=20),表示参加抽奖的人数。

Output

对于每个测试实例,请输出发生这种情况的百分比,每个实例的输出占一行, 结果保留两位小数(四舍五入),具体格式请参照sample output。

Sample Input

1
2


Sample Output

50.00%


题解
1.这是一个排错公式啊a[i]=(i-1)(a[i-1]+a[i-2]);

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
long c[]= new long[21];
c[1]=0;
c[2]=1;
for(int i=3;i<21;i++){
c[i] =(i-1)*(c[i-1]+c[i-2]);
}
Scanner in = new Scanner(System.in);
int n;
n= in.nextInt();
while(n!=0){
n--;
int a=in.nextInt();
System.out.println(String.format("%.2f",(double)c[a]/fact(a)*100)+"%");
}
}

private static long fact(int a) {
// TODO Auto-generated method stub
long c=1;
for(int i=1;i<=a;i++){
c*=i;
}
return c;
}

}
2.三种方法用java实现C/C++一样的数据输出格式

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class format {
double f = 111231.5585;
public void m1() {
BigDecimal bg = new BigDecimal(f);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
}
/**
* DecimalFormat转换最简便
*/
public void m2() {
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
}
/**
* String.format打印最简便
*/
public void m3() {
System.out.println(String.format("%.2f", f));
}
public void m4() {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(f));
}
public static void main(String[] args) {
format f = new format();
f.m1();
f.m2();
f.m3();
f.m4();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: