优快云编程竞赛第45期

本文介绍了优快云竞赛的第45期问题,包括如何寻找缺失的勾股数和最近的回文数。文章提供了Java代码示例来解决这两个问题,并涉及量子计算的效率以及早期计算机的模块化设计。此外,还提及了图灵机在可计算问题理论中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优快云竞赛第45期总结。

一、勾股数

勾股数是一组三个正整数,它们可以作为直角三角形的三条边。

比如3 4 5就是一组勾股数。

如果给出一组勾股数其中的两个,你能找出余下的一个吗?

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num1 = Integer.parseInt(scanner.next());
        int num2 = Integer.parseInt(scanner.next());
        find(num1, num2);
    }

    public static void find(int n1, int n2) {
        // 三种情况 假设第三条边是 x
        // p + x*2 = q
        // q + x*x = p
        // p + q = x*x
        int p = n1 * n1;
        int q = n2 * n2;
        if (p > q) {
            find(n1 - 1, p - q, p + q);
            return;
        }
        if (p < q) {
            find(n2 - 1, q - p, p + q);
            return;
        }
        int x = exist((int) Math.sqrt(p + q) + 1, p + q);
        System.out.println(x);
    }

    public static void find(int range, int target, int sum) {
        int x = exist(range, target);
        if (x != -1) {
            System.out.println(x);
            return;
        }
        x = exist((int) Math.sqrt(sum) + 1, sum);
        System.out.println(x);
    }

    public static int exist(int range, int target) {
        for (int i = range; i > 0; i--) {
            if (i * i == target) {
                return i;
            }
        }
        return -1;
    }

二、最近的回文数

回文数是一个非负整数,它的各位数字从高位到低位和从低位到高位的排列是相同的。

以下是一些回文数的例子:

0 1 33 525 7997 37273

现在给到一个数,求离它最近的一个回文数(离与它的差的绝对值最小)。

如果这个数本身就是回文数,那么就输出它本身。

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println(find(Long.parseLong(s.next())));
    }

    public static long find(long n) {
        if (isP(n)) {
            return n;
        }
        // 小于10必然回文
        // n>10, 则在 (10, n) (n, n+(n-10)] 两个区间从n开始左右同时找
        // 没找到直接返回9
        for (long i = 1; i < n - 9; i++) {
            if (isP(n - i)) {
                return n - i;
            }
            if (isP(n + i)) {
                return n + i;
            }
        }
        return 9;
    }

    public static boolean isP(long n) {
        if (n < 10) {
            return true;
        }
        String m = String.valueOf(n);
        int left = 0;
        int right = m.length() - 1;
        while (left < right) {
            if (m.charAt(left) == m.charAt(right)) {
                left++;
                right--;
            } else {
                return false;
            }
        }
        return true;
    }

三、判断题

量子计算之所以有如此高的计算效率,根本原因是它突破了二进制。

错。

四、单选题

4.1第一个用模块化原理实现可编程计算机的是谁?

康拉德·楚泽

4.2 Z系列计算机和几百年前的差分机使用的部件数量基本相当,尤其是Z1也是纯机械实现的,前者却可以在较少的人力和预算下得以成功完成,以下哪一项不属于Z系列计算机的关键成功因素?

得到了政府的资助,并且有得力的助手

五、填空题

从数学上奠定了可计算问题的理论基础的,或者说计算机的数学模型是?

图灵机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值