网易互娱笔试5/28
三道编程,每道100分
1.签到题对应加和输出就完了
AC
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long []ans = new long [4];
//atk atkper def spd
for(int i = 0;i<6;i++){
String s = in.next();
switch (s){
case "atk":ans[0]+=in.nextInt();break;
case "atkper":ans[1]+=in.nextInt();break;
case "def":ans[2]+=in.nextInt();break;
case "spd":ans[3]+=in.nextInt();break;
}
int n = in.nextInt();
for(int j=0;j<n;j++){
String st = in.next();
switch (st){
case "atk":ans[0]+=in.nextInt();break;
case "atkper":ans[1]+=in.nextInt();break;
case "def":ans[2]+=in.nextInt();break;
case "spd":ans[3]+=in.nextInt();break;
}
}
}
System.out.println("atk "+ans[0]);
System.out.println("atkper "+ans[1]);
System.out.println("def "+ans[2]);
System.out.println("spd "+ans[3]);
}
}
2.n个位置,每个位置可以放1到7的任意数(包含1和7),要求n个数相加为m时,对于每个1到7的每个i,给出i能出现的最多次数。
考虑过dp,没搞出来,痛苦面具
过10%
思路:m/i大于n或刚好等于n的,说明i的出现最多次数就是m/i;否则,emm,不好说
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
int m = in.nextInt();
int []ans = new int[8];
for(int i = 7;i>=1;i--){
if(m/i<n || ( m/i==n && m%i==0))ans[i]=(m/i);
else{for(int j = 1;j<n;j++){
if(i*j+7*(n-j)>=m){
ans[i]++;
}else break;
}
}
}
for(int i = 1;i<=7;i++){
System.out.println(ans[i]);
}
}
}
}
3.题目没怎么看就跑路了,看到路径就头疼
直输-1骗了5%
欢迎大家讨论!
#我的实习求职记录#
查看6道真题和解析