dangerousstool level
获赞
0
粉丝
0
关注
0
看过 TA
0
C++
IP属地:未知
暂未填写个人简介
私信
关注
2016-06-14 21:13
C++
乐视编程题通过率100%的大牛贴个程序呗
酱油元帅:Java写的,为了图快变量名比较逗逼,请见谅 第一题 import java.util.*; public class test1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int no = in.nextInt(); List<List<Integer>> kezhi = new ArrayList<>(); for(int i = 0; i < no; i++) { String kezhi_str = in.next(); ArrayList<Integer> kezhi_lst = new ArrayList<>(); for(char c: kezhi_str.toCharArray()) { kezhi_lst.add(c - '0'); } kezhi.add(kezhi_lst); } int cnt = generateMethod(kezhi, no-1).size(); System.out.println(cnt); } } public static List<Set<Integer>> generateMethod(List<List<Integer>> kezhi, int i) { if(i == 0) { List<Set<Integer>> res = new ArrayList<>(); for(int duishou: kezhi.get(0)) { Set<Integer> duishoujihe = new HashSet<>(); duishoujihe.add(duishou); res.add(duishoujihe); } return res; } else { List<Set<Integer>> zhiqianduishoujiheliebiao = generateMethod(kezhi, i-1); List<Set<Integer>> res = new ArrayList<>(); for(Set<Integer> zhiqianduishoujihe: zhiqianduishoujiheliebiao) { for(int duishou: kezhi.get(i)) { if(!zhiqianduishoujihe.contains(duishou)) { Set<Integer> xinduishoujihe = new HashSet<>(); xinduishoujihe.addAll(zhiqianduishoujihe); xinduishoujihe.add(duishou); res.add(xinduishoujihe); } } } return res; } } } 第一题简单地利用递归就能满足要求了,不用想得很复杂,就算超时了再改就行了 *************************************************************************************************** 第二题 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class test2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLong()) { int cost = in.nextInt(); long money = in.nextInt(); long cnt = 0; long min_paid = (long)Math.ceil(cost/0.95); long max_paid = Math.min((long)Math.floor(cost/0.90), money); while(min_paid%5 != 0) min_paid++; while (max_paid%5 != 0) max_paid--; if(max_paid >= min_paid) cnt = (max_paid - min_paid) / 5 + 1; System.out.println(cnt); } } } 第二题主要是int有可能会溢出,所以尽量用long,还有就是边界处理有一点麻烦 ************************************************************************************************ 第三题 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class test3 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { long S = in.nextLong(); long cnt = 0; for(long i = 0; i*i < S; i++) { long resi = S - i*i; if(hasRoot(resi)) cnt++; } System.out.println(cnt*4); } } public static boolean hasRoot(long i) { if(i == 0 || i == 1) return true; long p = 0, r = i; while(true) { long q = p + (r-p)/2; if(q*q > i) r = q; else if(q*q < i) p = q; else return true; if(p > r) return false; if(r-p <= 1) { if(r*r == i || p*p == i) return true; else return false; } } } } 第三题也是可能有溢出问题,所有直接上long,然后就是判断整数有没有根用了一个二分法
投递乐视网等公司7个岗位
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务