两个编程题,分别 50 分(共100分),限时一小时。投的是测试开发工程师。
题目1:图灵测试
人机测试是图灵测试的一个基本应用,现有一种人机测试是随机的给出两个三位数(不足三位添加了前导零),然后让用户在三十秒内输入较大的那个,若用户在三十秒内没有输入正确或者输入错误了三次,那就是没有通过测试,否则就算通过。
若用户输入正确之后继续进行输入,请忽略
现在请你写个程序来模拟这个人机测试的流程
输入描述
第一行一个正整数 T,代表测试数据的组数 每组输入包括 31 行
数据的第一行给出两个以空格分隔的三位数
接下来 30 行,每行一个整数,如果改行为 0,表用户在这一秒没有输入,否则就是用户输入的数字,用户输入的数字为不超过 1000 的正整数
1≤T≤3
接下来 30 行,每行一个整数,如果改行为 0,表用户在这一秒没有输入,否则就是用户输入的数字,用户输入的数字为不超过 1000 的正整数
1≤T≤3
输出描述
如果测试通过则输出 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。
小 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) 回帖