A-课程报名洛谷题目链接
传智播客推出了一款课程,并进行了一次促销活动。具体来说就是,课程的初始定价为v元;每报名m个学员,课程的定价就要提升a 元。由于课程能够容纳的学生有限,因此报名到 n人的时候就停止报名。
现在老师想知道,当课程停止报名时,一共可以获得多少学费呢?
一行四个使用空格隔开的整数,分别为 n,v,m,a。
一行一个整数,表示答案。
输入
5 1 1 1
输出
15
每卖出 1个课程,价格就会提高 1元,所以总共获得 1+2+3+4+5=15元。
对于 50% 的数据,满足1≤n,m,v,a≤10;
对于额外20% 的数据,满足 a=0;
对于100% 的数据,满足0≤n,m,v,a≤1000。
然而,由于本次比赛是 ACM 赛制,因此您必须通过100% 的数据才能够获得本题的得分,后题同。
代码:
package _传智杯.初赛._3;
import java.util.Scanner;
public class 课程报名 {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int v=sc.nextInt();
int m=sc.nextInt();
int a=sc.nextInt();
int res=0;
int person=0;
for(int i=1;i<=n;i++){
person++;
res+=v;
if(person==m){
v+=a;
person=0;
}
}
System.out.println(res);
}
}
B_期末考试成绩洛谷链接
传智专修学院的 Java 程序设计课程的评价体系是这样的:
首先,所有学生会有一个卷面得分,这个得分一定是一个 [0,100][0,100] 之间的整数。
如果卷面得分在90分以上,那么他的 GPA(加权平均成绩) 就是满分 4.0。
如果卷面得分在60∼89之间,那么他每比90分少1分,那么他的分数就会在4.0的基础上减少 0.1。
如果卷面得分不到60分,那么善良的老师会给他照顾。具体来说,如果他的分数为x,那么老师会把他的分数调整为(向下取整) ,再计算他的 GPA。
如果经过调整该学生的得分依旧没满 60 ,那么他就挂科了,GPA 就是 0 分。
现在给你一个人的期末卷面得分,请你输出他的最终 GPA
一行一个整数 x,表示该人的期末得分。
一个小数点后只有一位的浮点数,表示该同学获得的GPA。
请注意,如果有 .0 请保留。
输入 #1
99
输出 #1
4.0
输入 #2
88
输出 #2
3.8
输入 #3
12
输出 #3
0.0
对于 20% 的数据,满足90≤x≤100;
对于额外 30% 的数据,满足 60≤x≤100;
对于 100% 的数据,满足 0≤x≤100。
代码:
package _传智杯.初赛._3;
import java.util.Scanner;
public class B_期末考试成绩 {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
double res=0.0;
if(x>=90)
res=4.0;
if(x>=60&&x<=89)
res=(x-50)/10.0;
if(x<60){
int x1= (int)(Math.sqrt(x)*10);
if(x1<60)
res=0.0;
else
res=(x1-50)/10.0;
}
System.out.println(res);
}
}
C-志愿者洛谷链接
传智专修学院总共召集了 n 位志愿者来负责打扫活动,现在需要你负责帮忙统计每位志愿者的工作情况,用来制作光荣榜,给他们发小花花。
第 ii 位志愿者有一个工作时长 ,以及他负责的工作的难度系数 ,一名志愿者的贡献度可以用 确定。
现在要为这些志愿者的贡献度从大到小排个序,请你完成这个任务。相同贡献度的志愿者以工作时长较长的排在前面。如果贡献和时长一样,那么编号小的志愿者排在前面。
一行一个整数 n ,表示志愿者的数量。
接下来 n 行,每行两个使用空格隔开的整数,,表示第 i 名志愿者的时间和难度系数。
一行,共 n 个整数,第 i 个数表示排名为 i 的志愿者的序号,从 1 开始编号。
请注意本题时限为 5s,输入输出规模较大,请注意常数因素对耗时的影响,我们不会给使用 Java 和 Python 的选手增加额外的运行时间。
输入 #1
3
1 2
2 3
3 4
输出 #1
3 2 1
对于 40% 的数据,满足 1≤n≤100;
对于额外20% 的数据,满足 =1;
对于 100\%100% 的数据,满足 ,。
然而,由于本次比赛是 ACM 赛制,因此您必须通过 100% 的数据才能够获得本题的得分,后题同。
定义一个Volunteer类存放志愿编号、时长、难度、贡献,自定义排序方法,建立对象数组,用Arrays.sort给各志愿者按要求排序即可。
代码:
package _传智杯.初赛._3;
import java.util.Arrays;
import java.util.Scanner;
public class C_志愿者 {
static class Volunteer implements Comparable{
public int id;
public int t;
public int k;
public int gx;
public int compareTo(Volunteer v){
//return 1交换次序 -1不交换次序
//说明改对象比后一个对象gx值大,不需要交换因此返回-1
if(this.gx>v.gx){
return -1;
}
else if(this.gx==v.gx){
//说明改对象与后一个对象gx值相等,该对象的t比后一个对象的t大,不需要交换对象,因此返回-1
if(this.t>v.t){
return -1;
}
else if(this.t==v.t){
if(this.id
D_终端洛谷链接
有一天您厌烦了电脑上又丑又没用的终端,打算自己实现一个 Terminal。
具体来说,它需要支持如下命令:
touch filename
:如果名为 filename
的文件不存在,就创建一个这样的文件,如果已经存在同名文件的话则不进行任何操作。
rm name
:删除名为 name
的文件。如果不存在这样的文件,就不进行任何操作。
ls
:按创建时间为顺序,显示当前已经存在的未被删除的所有文件。
rename xxx yyy
:将名为xxx
的文件名字改为 yyy
。如果不存在这样的文件,或者已经存在文件名为 yyy
的文件,则不做任何操作。
这里所有涉及的文件名都仅由大写或者小写的英文字母构成,且文件名区分大小写。
第一行一个整数 n ,表示总共要执行的操作数。
接下来 n 行,每行一个字符串,表示一条命令。
对于每个 ls
命令,请输出若干行,每行一个字符串,表示一个文件,如果当前并没有任何文件,则什么都不输出。
请注意本题时限为 3s,输入输出规模较大,请注意常数因素对耗时的影响,我们不会给使用 Java 和 Python 的选手增加额外的运行时间。
输入 #1
6
touch yyh
touch yyhtql
rename yyh yyhnb
touch qwq
rename qwq qaq
ls
输出 #1
yyhnb
yyhtql
qaq
对于 20% 的数据,只存在 1,3 操作
对于另外 20% 的数据,只存在 1,2,3 操作
对于另外 20% 的数据,只存在 1,3,4 操作
对于 100% 的数据,满足
保证所有命令的长度不超过 2000个字符。
分析
首先选取合适的数据结构,根据题目分析发现使用列表最为方便,插入即为add,删除remove,遍历get,修改set,模拟即可。
代码:
package _传智杯.初赛._3;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class D_终端 {
public static int getIndex(String s,Listlist){
for(int i=0;ilist=new ArrayList<>();
for(int i=0;i
E_运气洛谷链接
YYH Land(Yoauld,Youthful & Happy Land) 是位于炽蓝仙野的一片神奇的国度,那里的人们过着无拘无束的的快乐生活。
哈兰·斯威提是 YYH Land 远近闻名的注铅骰子爱好者。有一天他碰到了这么一个问题:
你有一枚 6 个面的骰子,分别写了 1,2,3,4,5,6 每一面朝上的概率是均等的。
现在哈兰想知道,如果他投掷 n 次,并且将结果按顺序写在纸上成为一个数。(比如说如果哈兰扔了 3 次,分别是 3,2,5 那么他最后得到的数就是 325)他现在想知道这个数是 k 的倍数的可能情况有多少种,其中 k 是一个特定的数。
由于这个方案数可能会很大,所以请你输出结果对 取模的结果。
一行两个整数 n,k 意义如题所示。
一行一个整数,表示答案。
输入 #1
2 11
输出 #1
6
样例解释
在投掷两次骰子总共 36 种可能中,只有 ("11","22","33","44","55","66") 是符合条件的。所以答案是 6。
数据规模与约定
对于 40% 的数据,满足 n 分别为 1,2,3,4;
对于另外 30% 的数据,满足 ;
对于 100% 的数据,满足 ;
注意
该题目数据可能较大,因此记录结果时需使用long型而不是int型
代码:
package _传智杯.初赛._3;
import java.util.Scanner;
public class E_运气 {
static int n;
static int k;
static long res=0;
public static void check(String s){
long l=Long.parseLong(s);
if(l%k==0)
res++;
}
public static void dfs(int num,String s){
if(num==n){
check(s);
return;
}
for(int i=1;i<=6;i++){
dfs(num+1,s+i);
}
}
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
k=sc.nextInt();
dfs(0,"");
System.out.println(res%(long)(Math.pow(10,9)+7));
}
}
有问题可私信或评论,看到后会第一时间回复!!