第三届传智杯程序设计赛B组题解Java版
程序员文章站
2022-04-27 10:36:34
第三届传智杯程序设计赛B组题解Java版文章目录第三届传智杯程序设计赛B组题解Java版A - 课程报名B - 期末考试成绩C - 志愿者D - 终端E - 运气A - 课程报名import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt...
第三届传智杯程序设计赛B组初赛题解Java版
A - 课程报名
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(); // 总可买人数n
int v = in.nextInt(); // 初始定价
int m = in.nextInt(); // 每m个人提升一次价格
int a = in.nextInt(); // 每次提升a元
int sum = 0;
int temp = 1;
for(int i=0;i<n;i++){
if(i==m*temp){
temp++;
}
sum+=v+(temp-1)*a;
}
System.out.println(sum);
}
}
B - 期末考试成绩
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double gpa = 0.0;
int temp = 0;
int course = 0;
int x = in.nextInt();
if(x >=90){
gpa = 4.0;
}else if(x>=60 && x<=89){
temp = 90 - x;
gpa = 4.0 - temp*0.1;
}else{
course = (int)Math.floor(Math.sqrt(x)*10);
if(course >=90){
gpa = 4.0;
}else if(course>=60 && course<=89){
temp = 90 - course;
gpa = 4.0 - temp*0.1;
}else{
gpa = 0.0;
}
}
System.out.println(String.format("%.1f",gpa));
}
}
C - 志愿者
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Volunteer[] volunteerList = new Volunteer[n];
for(int i=0;i<n;i++){
int t = in.nextInt();
int k = in.nextInt();
volunteerList[i] = new Volunteer();
volunteerList[i].i = (i+1);
volunteerList[i].t = t;
volunteerList[i].k = k;
volunteerList[i].tk = (t*k);
}
Arrays.sort(volunteerList);
for(int i=0;i<n;i++){
if(i!=(n-1))
System.out.print(volunteerList[i].i+" ");
else
System.out.print(volunteerList[i].i);
}
}
static class Volunteer implements Comparable<Volunteer>{
public int i; // 志愿者编号
public int t; // 工作时长
public int k; // 难度系数
public int tk; // 贡献
// 排序的比较方法
/**
* 相同贡献度的比时长 长的在前
* 相同时长的比编号 小的在前
*/
@Override
public int compareTo(Volunteer b) {
if(this.tk > b.tk){
return -1;
}else if(this.tk == b.tk){
if(this.t > b.t){
return -1;
}else if(this.t == b.t){
if(this.i < b.i)
return -1;
}
}
return 1;
}
}
}
D - 终端
import java.util.*;
/**
* 使用ArrayList
* 利用其下标顺序来代替文件创建的先后顺序
* touch:向list中新增一个元素
* rename:将指定下标重新赋值
* rm:删除list中元素
* 元素的相对顺序不会发生改变 参照ArrayList源码fastRemove 将删除位置后的元素统统向前拷贝 并将最后一位置为null
* ls:遍历数组元素
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
List<String> fileSystem = new ArrayList<>();
for (int i = 0; i < n; i++) {
String file = null;
String command = in.next();
if (!"ls".equals(command))
file = in.next();
if ("touch".equals(command)){
if (file != null){
fileSystem.add(file);
}
}else if ("rm".equals(command)){
if (file != null){
if (fileSystem.contains(file)){
fileSystem.remove(file);
}
}
}else if ("ls".equals(command)){
for (String s : fileSystem) {
System.out.println(s);
}
}else{
String newfile = in.next();
if (file != null){
if (fileSystem.contains(file) && !fileSystem.contains(newfile)) {
for (int j = fileSystem.size() - 1; j >= 0 ; j--) {
if (fileSystem.get(j).equals(file)){
fileSystem.set(j,newfile);
}
}
}
}
}
}
}
}
E - 运气
import java.util.*;
/**
* 深度优先遍历
* 每次遍历到终止条件时判断一下是否是k的倍数 如果是将结果值+1 不是 直接return
* 最后将解按指定规则处理
*/
public class Main {
private static int n;
private static int k;
private static long res;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
k = in.nextInt();
if (n == 0){
return;
}
dfs(0,"");
System.out.println((long) (res%(Math.pow(10,9)+7)));
}
private static void check(String number){
long parseLong = Long.parseLong(number);
if (parseLong%k == 0){
res++;
}
}
private static void dfs(int level, String number) {
if (level == n){
check(number);
return;
}
for (int i = 1; i <= 6; i++) {
dfs(level+1,number+i);
}
}
}
本文地址:https://blog.csdn.net/weixin_43556636/article/details/111871699