迅雷9.12 笔试

第一题,有正数A,和负数B,选m个A,n个B排成一排,使:m+n = 17 ,且任意相邻7个数和小于0,问这17个数的最大和是多少?

思路:找出7个数中至少需要几个B,然后按,A...A B...B A..A B...B A...A B...B 排列,取前17个,这样保证后三个尽可能使正数A。最后只过了88%,不知道漏掉了什么情况。【求大佬指点一下】

第二题:有 a a + bb = c*c ,且,a、b、c互质,求满足 0<a<b<c<=N的(a,b,c)有多少组

思路:a = jj - ii; b = 2ji; c = jj - ii; 则只有 j 和 i 满足互质且一个为奇数一个为偶数,则可得到一组满足题意的 a,b,c

//第一题
package com.zhudky;
import java.util.*;
public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int A  = sc.nextInt();
            int B =  sc.nextInt();
            int AOfSeven = 7;
            while(AOfSeven>0){
                int temp = A*AOfSeven + B*(7-AOfSeven);
                if(temp<0){
                    break;
                }
                AOfSeven--;
            }
            int numOfA = 2*AOfSeven ;
            int numOfB =  2*(7-AOfSeven);
            int num = numOfA + numOfB;
            while(num<=17){
                int temp = Math.min(AOfSeven,17-num);
                if(temp>0){
                    num += temp;
                    numOfA+= temp;
                }
                else{
                    break;
                }
                temp = Math.min(7-AOfSeven,17-num);
                if(temp>0){
                    num += temp;
                    numOfB += temp;
                }
                else{
                    break;
                }
            }
            int re = A*numOfA + B*numOfB;
            System.out.println(re);
        }
}
//第二题
package com.zhudky;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long N = sc.nextLong();
        int m = (int)Math.floor(Math.sqrt(N));
        int re =0;
        for (int i = 1; i < m+1; i++) {
            for (int j = i+1; j < m+1; j+=2) {
                //int a = j*j - i*i;
                //int b = 2*j*i;
                long c = j*j + i*i;
                if(c<=N && gcd(j,i)==1 ){
                    re++;
                }
                else if(c>N){
                    break;
                }
            }
        }
        System.out.println(re);
    }
    private static int gcd(int x,int y){
        return (x%y != 0) ? gcd(y,x%y):y;
    }
}
#迅雷##笔试题目##题解#
全部评论
啊 扎心了 错过了笔试
点赞 回复 分享
发布于 2018-09-13 09:56
A是10,B是-1。你的num初始化实际上就是14嘛,这种情况下第二个while循环直接就退出了吧,取不到17个数。
点赞 回复 分享
发布于 2018-09-13 01:35
我也是过了88%,不知道为什么
点赞 回复 分享
发布于 2018-09-12 22:47
public static void main(String[] args) { int[] a = new int[17]; Scanner in = new Scanner(System.in); int n = in.nextInt(), m = in.nextInt(); int sum = 7 * n, count = 0; while(sum >= 0){ //计算每7个相邻元素中至少需要几个负数才能相加小于0 sum = sum - n + m; count++; } //count < 5时,只需要考虑为头尾两个相邻对的负数个数 //count >= 5时,还需加上中间相邻对中三个元素中负数的个数。 if(count >= 5){ System.out.println((3 * count - 4) * m + (17 - (3 * count - 4)) * n); } else System.out.println(2 * count * m + (17 - 2 * count) * n); } 格式有点乱,将就看吧,17数的AC
点赞 回复 分享
发布于 2018-09-12 21:08
第一题暴力即可,复杂度O(17*2^17)
点赞 回复 分享
发布于 2018-09-12 20:57
有可能Ans比0小
点赞 回复 分享
发布于 2018-09-12 20:48

相关推荐

千千倩倩:简历问题有点多,加v细聊
点赞 评论 收藏
分享
牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
10-23 16:33
门头沟学院 Java
本人某中9本科,成绩中等,目前没科研没实习,目前后端学到了javaWeb,开始没定好方向,在学国外课程,走工程路线起步有点晚了,到这个时间点了还在学JavaWeb,顿感迷茫,不知道是坚持走下去还是寒假去准备考研。考研这个路弄得我还是心痒痒的,因为从众考研的人也不在少数,所以会有这方面的心理安慰吧,就是“不行我可以去考研啊”,而且意味着三年的缓冲,为了复试还有积攒经验美化简历,其实现在也可以去申入实验室打杂;就业可能意味着多些工作经验,工程岗应该到后面还是经验大于学历?还是有点迷茫了,求助好心人有无路线启发
千千倩倩:同27给点建议,现在这个时间点可以快速看完外卖和点评,不用跟着敲,但一定要在看的时候总结每个部分的整个业务流程,对其中的实现有一个大概的印象。然后直接开始看八股,刷算法。八股和算法最好还是在项目学习中穿插着看。如果计算机基础,算法这些基础好,加上每天刻苦学习,两周可以达到勉强能面试的水平,到时候就直接海投中小厂,在约面和面试的过程中不断巩固知识。没找到实习也没关系,就当积累经验。再沉淀一波直接明年三月开始投暑期,毕竟是9本,总是有面试机会的,只要你这三个月不懈怠,面试发挥得一定不错,只要拿到一个中,大厂暑期实习,秋招就有竞争力了。总得而言,现在还有机会,但是时间非常紧张,需要你结合自己情况考虑,共勉
你会选择考研还是直接就业
点赞 评论 收藏
分享
评论
点赞
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务