继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

拼多多2018服务端笔试

LEATH
关注TA
已关注
手记 315
粉丝 93
获赞 466

第一题

pdd01.png

import java.util.Scanner;/**
 * @Author: Taoyongpan
 * @Date: Created in 15:10 2018/4/3
 */public class Test05 {    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);        while (sc.hasNext()){            int n = sc.nextInt();            int k = sc.nextInt();            int[] arr = new int[105];            int a = 0;            int b = 0;            for (int i = 0 ; i< n;i++){
                a = sc.nextInt();
                b = sc.nextInt();
                a+=50;
                b+=50;                for (int j = a; j <= b;j++){
                    arr[j]++;
                }
            }            int max = -1;            int min = 105;            for (int i = 0 ; i<101;i++){                if (arr[i]>=k){                    if (i>=max)
                        max = i;                    if (i<=min)
                        min = i;
                }
            }
            max-=50;
            min-=50;            if (min<max&&min>100&&max<0)
                System.out.println(min+" "+max);            else
                System.out.println("error");
        }
    }
}

第二题


pdd02.png


解法一,不可取,有点暴力


import java.text.DecimalFormat;import java.util.Scanner;/**
 * @Author: Taoyongpan
 * @Date: Created in 15:10 2018/4/3
 */public class Test06 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);        while (sc.hasNext()){
            String str = sc.nextLine();            char[] c = str.toCharArray();            double h = 0;            int m = 0;            if(c.length==4){
                m = (c[2]-'0')*10+(c[3]-'0');
                h = ((c[0]-'0')+((m*1.0)/60));

            }else if (c.length ==5){
                m = (c[3]-'0')*10+(c[4]-'0');
                h = (((c[0]-'0')*10+(c[1]-'0'))+((m*1.0)/60));
            }            if (m<=59 && m>=0 && h<24 && h>=0){                if ((Math.abs((h%12)*5-m)*6)%1 == 0){                    if (Math.abs((h%12)*5-m)*6<=180)
                        System.out.println((int)(Math.abs((h%12)*5-m)*6));                    else
                        System.out.println((int)(360-Math.abs((h%12)*5-m)*6));
                }else {
                    DecimalFormat df = new DecimalFormat("#.0");                    if (Math.abs((h%12)*5-m)*6<=180)
                        System.out.println(df.format(Math.abs((h%12)*5-m)*6));                    else
                        System.out.println(df.format(360-Math.abs((h%12)*5-m)*6));
                }
            }else {
                System.out.println("error");
            }
        }
    }
}

解法二

import java.text.DecimalFormat;import java.util.Scanner;/**
 * @Author: Taoyongpan
 * @Date: Created in 20:35 2018/4/3
 */public class Test09 {    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);        while (sc.hasNext()){
            String str = sc.nextLine();
            String[] s = str.split(":");            int h, m;
            h = Integer.valueOf(s[0]);
            m = Integer.valueOf(s[1]);            double gap = (30 * h - 5.5 * m) % 360;            if (gap>180){
                gap = 360-gap;
            }            if (gap%1==0){
                System.out.println((int)gap);
            }else {
                DecimalFormat df = new DecimalFormat("#.0");
                System.out.println(df.format(gap));
            }
        }
    }
}

第三题

pdd03.png

#include<bits/stdc++.h>  using namespace std;  
typedef long long ll;  
const double pi=acos(-1.0);  
const double eps=1e-8;struct point{
    double x,y;
    point(double a=0,double b=0){
    x=a,y=b;
    }
}p[110];  

double xmult(point p1,point p2,point p0){    return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}int dblcmp(double x){    if(x<-eps) return -1;    if(x>eps) return 1;    return 0;
}int dot_inline(point a,point b,point c){    return dblcmp(xmult(a,b,c));
}int main(){    int n;    cin>>n;    for(int i=0;i<n;i++){        cin>>p[i].x>>p[i].y;
    }
    ll cnt=0;    for(int i=0;i<n;i++){        for(int j=i+1;j<n;j++){            for(int k=j+1;k<n;k++){                if(dot_inline(p[i],p[j],p[k])) cnt++;
            }
        }
    }    cout<<cnt<<endl;    return 0;
}

这题的代码是我室友写出来的,我的思路是,求斜率,当三个点在一条直线上的时候不能构成,其他都行,暴力遍历一遍就能 算出结果;



作者:Taoyongpan
链接:https://www.jianshu.com/p/c40aa3836b77


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP