360 4.16笔试(Java实现)
第一题过了百分之45// // 输入 // 输入第一行包含两个正整数n,m,分别代表参赛选手数量和取得连胜的要求。(1<=n<=100000,1<=m<=10^9) // // 输入第二行包含n个正整数,中间用空格隔开,第i个数表示队伍的第i位选手的战斗力,整体是一个1~n的排列。 // // 输出 // 输出仅包含一个正整数,表示截止到游戏终止,共进行多少场比赛。 // // // 样例输入 // 4 2 // 1 3 2 4 // 样例输出 // 2 //通过:45 import java.util.*; public class Main { public static void main(String[] args){ Deque<Integer> q=new LinkedList<>(); Scanner in=new Scanner(System.in); int n=in.nextInt(); long m=in.nextLong(); long[] map=new long[n+1]; for(int i=0; i<n; i++){ q.addLast(in.nextInt()); } if(n==1) System.out.println(0); else{ int cnt=0; while (true){ cnt++; int first=q.pollFirst(); int senond=q.pollFirst(); if(first<senond){ map[senond]++; if(map[senond]==m) break; q.addFirst(senond); q.addLast(first); }else{ map[first]++; if(map[first]==m) break; q.addFirst(first); q.addLast(senond); } } System.out.println(cnt); } } }
第二题过了百分之72
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
//
// 输入
// 输入两个整数n,a0(1≤n,a0≤100)。
//
// 输出
// 输出概率,小数点后四舍五入保留5位小数。
//
//
// 样例输入
// 3 3
// 样例输出
// 0.72049
//
// 提示
// 输入样例2
// 1 3
// 输出样例2
// 0.25000
//
// 输入样例3
// 100 3
// 输出样例3
// 1.00000
//通过:72
public class Main {
private static double res=0;
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int a=in.nextInt();
helper(n,a,1);
System.out.println(String.format("%.5f",res));
}
public static void helper(int n, int a,double pro){
if(n==0){
if(a==0) res+=pro;
return;
}
for(int i=0; i<=a; i++){
double tmp=pro;
pro*=1/(double)(a+1);
helper(n-1, a-i, pro);
pro=tmp;
}
}
}
查看14道真题和解析