几道考察思维能力的编程面试题

要求

  1. 时间限制:1小时做题+10分钟发送邮件;
  2. 题目内容:3题选2题,可以1+3或2+3(第3题必做);
  3. 代码提交:将源代码以文本文件的形式发送至 [email protected]
  4. 运行要求:代码可以直接在以下在线平台上运行:https://tool.lu/coderunner/
  5. 代码质量:需要考虑代码的可读性、强壮性、运行性能、可移植性、编码规范和注释说明。
  6. 有任何问题可以随时联系提问。

题目

  1. 观察以下计算规则编写函数 int gcd(int m, int n) 求正整数 m , n m,n m,n 的最大公约数。
    示例1: 36 , 24 → 24 , 12 → 12 , 0 36,24 \rightarrow 24,12 \rightarrow 12,0 36,2424,1212,0,故最大公约数为12。
    示例2: 54 , 22 → 22 , 10 → 10 , 2 → 2 , 0 54,22 \rightarrow 22,10 \rightarrow 10,2 \rightarrow2,0 54,2222,1010,22,0,故最大公约数为2。
    示例3: 32 , 18 → 18 , 14 → 14 , 4 → 4 , 2 → 2 , 0 32,18 \rightarrow 18, 14 \rightarrow 14,4 \rightarrow4,2 \rightarrow 2,0 32,1818,1414,44,22,0,故最大公约数为2。
    示例4: 81 , 54 → 54 , 27 → 27 , 0 81,54 \rightarrow 54,27 \rightarrow 27,0 81,5454,2727,0,故最大公约数为27。
    示例5: 75 , 15 → 15 , 0 75,15 \rightarrow 15,0 75,1515,0,故最大公约数为15。

  2. 已知正整数 a , b , c a,b,c a,b,c 满足 a ∗ b   m o d   c = ( a   m o d   c ) ∗ ( b   m o d   c )   m o d   c a*b \ \mathrm{mod} \ c = (a \ \mathrm{mod} \ c)*(b \ \mathrm{mod} \ c) \ \mathrm{mod} \ c ab mod c=(a mod c)(b mod c) mod c,其中 m o d \mathrm{mod} mod 是取余操作
    请根据以上计算原则,编写代码求 100 1 305   m o d   1024 1001^{305} \ \mathrm{mod} \ 1024 1001305 mod 1024 的值。

  3. 编写以下函数:
    签名:int[][] split(int[] input, int[] seps)
    作用:将输入input按spes进行拆分。
    输入:input:按升序排列的整型数组,seps:按升级排列的分段间隔
    示例:设 input={1, 2, 3, 5, 8, 12, 15, 23, 35, 36, 45, 46, 51}, spes={5, 12, 18, 22, 47},
    则输出为:{{1, 2, 3}, {5, 8}, {12, 15}, {}, {23, 35, 36, 45, 46}, {51}}

附:其他可用在线编程平台:多语言版,Java版,C/C++版,Python版;

你可能感兴趣的:(算法设计与分析,面试题,逻辑思维)