1.临近年末,A公司准备给公司员工分法奖品,每名员工都可以提出自己期望的奖品。为了安排采购,公司统计了各种奖品的价格以及选择此奖品的人数。假如你是采购人员,需要申请财务报销。请你计算出这批奖品的总体价格标准差。
公式中X1,X2,X3...Xn均为实数,其平均值(算术平均值)为μ,标准差为σ。
输入格式:
第一行,输入一个数字n(n≤1000),表示奖品的种类。
之后共n行,每行输入一个正整数x和一个浮点数y,分别表示选择某种奖品的人数和此奖品的价格。(0<x<1000,0<y<1000)
输出格式:
输出此奖品的总体价格标准差(四舍五入保留2位有效数字)
输入样例:
4
20 50.00
22 65.50
18 80.00
25 45.00
输出样例:
13.45
解题思路:标准差计算,考察数学能力
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n= sc.nextInt();
//总人数,总价格
double sum=0,sum1=0,ans=1;
double[][] arr = new double[n][2];
//存入数组,0列存入人数,1列存放价格
for (int i = 0; i < n; i++) {
arr[i][0]=sc.nextDouble();
arr[i][1]=sc.nextDouble();
//计算总人数和总价格
sum+=arr[i][0];
sum1+=arr[i][1]*arr[i][0];
}
//平均值=总价格/总人数
double u=sum1/sum;
for (int i = 0; i < arr.length; i++) {
//人数*(对应的价格减去平均,然后求差的平方)
ans+=arr[i][0]*Math.pow((arr[i][1]-u),2);
}
//除以总人数然后取平方根
System.out.printf("%.2f",Math.sqrt(ans/sum));
}
}
2.假如你可以对数字进行如下两种操作:
操作一:将当前数×3。
操作二:将当前数-1。
现在给出两个数n,m(0<n,m≤1000),请问你最少需要多少次操作才能将n变成m?
输入格式:
共一行,两个数字n,m。
输出格式:
输出最少的操作次数。
输入样例:
217
输出样例:
3
代码未保存
3.
假如有一个3*3*3的立方体,它有六个面,每个面共有九个小正方形。每个小正方形按如下规则染色:
角上的方格为red,中心的方格为green,其他的方格为blue。
初始有一个机器人站在立方体顶面的中心,面朝一个blue方格。它将接受到条如下指令:L':为左转90度R'为右转90度,W”:为向前走一格。
机器人可以穿过立方体的棱到达另一个面。给出指令,求出机器人最后经过的面的数量(立方体一共有6个面,每一侧的9个小正方形都属于一个面)。
输入格式:
第一行共一个数字n(0<n≤106),表示指令的条数。
接下来共n行,每行一个大写字母'L或R'或W”。
输出格式:
输出一个正整数,表示机器人最后经过的面的数量。
输入样例:
7
W
W
L
W
W
R
W
输出样例:
3
代码未保存
4.输入一个正整数n,之后输入n个正整数,输出这n个数中正序对的个数。
正序对:设A为一个有n个数字的集合(>1),其中所有数字各不相同。如果存在正整数i,j对,使得1
≤i<j≤n而且AU<A[j],则<A[,A[j]>这个有序对称为A的一个正序对。
输入格式:
第一行共一个数字n(0<n≤10^5)。
接下来一行输入n个正整数(大小不超过10^9)。
输出格式:
输出这n个数中正序对的个数。
输入样例:
4
1342
输出样例:
4
样例说明:
4对正序对分别为<1,3>,<1,4>,<3,4>,<1,2>。
代码未保存
5.小明的花店里有 M 个花盆,每个花盆里可以种植一种花,不同的数字表示不同种类的花。每当小明需要培育一种花的时候,他会先观察自己的花店里是否已有这种花,如果已有就无须再去购买。如果没有的话,会先买来花的种子,如果还有花盆处于空闲状态,就种下需要培育花的种子;否则会将最先种下的花拔掉改为种植需要的花。初始状态花店里所有的花盆都是空闲的。已知小明先后需要培育N次花(可能会培育同一种不止一次),花店有M个花盆。在该策略指导下,按种类从小到大的顺序输出最终花盆中的花。
输入格式:
第一行共两个数字M,N(0<M,N≤10^3).
接下来一行输入N个正整数(大小不超过10^9)。
输出格式:
按种类从小到大的顺序输出最终花盆中的花。
输入样例:
3 10
1 3 1 2 4 5 7 1 2 3
输出样例:
1 2 3
这道题是最后时间做的,不知道对不对,仅供参考
import java.util.*;
/**
* @author whlie(true){learn}
*/
public class Main4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
List<Integer> list = new ArrayList<>();
//两个下标标识,flag记录最早种植的花,count记录用了几个花盆
int flag=0;
int count = 0;
for (int i = 0; i < n; i++) {
int a=sc.nextInt();
//判断店里是否已经有这个花了
if (!list.contains(a)){
//判断花盆是不是用完了
if (count==m){
//拔掉最新种的花
list.remove(flag);
//空出一个花盆
count--;
list.add(flag,a);
count++;
flag++;
if (flag>=m){
flag=0;
}
}else {
list.add(flag,a);
flag++;
if (flag>=m){
flag=0;
}
count++;
}
}
}
for (int i:list){
System.out.print(i+" ");
}
}
}