首页 > 阿里 2021/08/04笔试
头像
牛客584837756号
编辑于 2021-08-08 12:20
+ 关注

阿里 2021/08/04笔试

两个编程题,分别 50 分(共100分),限时一小时。投的是测试开发工程师。

题目1:图灵测试

人机测试是图灵测试的一个基本应用,现有一种人机测试是随机的给出两个三位数(不足三位添加了前导零),然后让用户在三十秒内输入较大的那个,若用户在三十秒内没有输入正确或者输入错误了三次,那就是没有通过测试,否则就算通过。

若用户输入正确之后继续进行输入,请忽略

现在请你写个程序来模拟这个人机测试的流程

输入描述

第一行一个正整数 T,代表测试数据的组数
每组输入包括 31 行
数据的第一行给出两个以空格分隔的三位数
接下来 30 行,每行一个整数,如果改行为 0,表用户在这一秒没有输入,否则就是用户输入的数字,用户输入的数字为不超过 1000 的正整数
1≤T3

输出描述

如果测试通过则输出 Y
如果测试不通过则输出 N

样例1

1
123 321
0
0
0
0
0
251
0
0
0
0
0
123
0
0
0
0
0
0
0
248
0
0
0
0
0
321
0
0
0
0
应该输出 N,因为输入错误了 3 次

样例2

1
123 321
0
0
0
0
0
251
0
0
0
0
0
123
0
0
0
0
0
0
0
321
0
0
0
0
0
248
0
0
0
0
应该输出 Y,因为在 3 次之内输入正确

AC参考代码

import java.util.Scanner;

public class Main {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        short t = sc.nextShort();
        for(int i = 0; i < t; i++){
            int a = sc.nextInt();
            int b = sc.nextInt();
            int num = Math.max(a, b);
            int count = 0;  // 记录当前是第几次输入数字
            boolean flag = false;
            for(int j = 0; j < 30; j++){
                int tmp = sc.nextInt();
                if(tmp == 0) continue;
                if(tmp == num && count < 3) flag = true;
                else count++;
            }
            if(flag) System.out.println("Y");
            else System.out.println("N");
        }
    }
}  

题目2:质数跳跃

星空中有 n 个星球,第 i 个星球有一个 gg 值 gg[i] 。如果 gg[i] = gg[j]*p ,其中 p 是质数或 1,那么小 k 可以从第 i 个星球跳跃到第 j 个星球,或者从第 j 个星球跳跃到第 i 个星球。
小 k 有 q 次询问,每次询问给出两个数 l,r, 询问能否在只经过 1 到 r 的星球的条件下从星球 l 到星球 r。

输入描述

第一行 2 个整数
第二行一共 n 个整数,第 i 个整数表示
接下来 q 行,每行两个整数

输出描述

一共 q 行
对每次询问,输出一行。
判断能否在只经过 1 到 r 的星球的条件下从星球 l 到星球 r
如果能,输出"ok",否则输出"no"

输入

5 2
1 2 3 4 5
1 3
2 4
输出
ok
ok
说明
两次询问小k都能直接一步跳跃过去
输入
5 2
2 8 6 24 18
1 5
2 3
输出
ok
no
说明
第一次询问:可以从星球1-星球3-星球5
第二次询问:无法到达

看到第二题,我就想说,我是***

全部评论

(2) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐