迅雷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

相关推荐

点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
12
分享

创作者周榜

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