网易互娱笔试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%
欢迎大家讨论!
#我的实习求职记录#