CSDN竞赛第45期题解-java

文章包含几道编程题的解析,第一题是寻找直角三角形的勾股数,采用直接暴力方法求解;第二题是寻找给定数最近的回文数,使用双指针字符匹配法;第三题和第四题是关于量子计算和计算机历史的知识判断;最后一题提到图灵对可计算问题的理论贡献以及冯诺依曼的计算机模型。
摘要由CSDN通过智能技术生成

1、题目名称:勾股数

        勾股数是一组三个正整数,它们可以作为直角三角形的三条边。 比如3 4 5就是一组勾股数。 如果给出一组勾股数其中的 两个,你能找出余下的一个吗?

解析:直接暴力!

import java.util.*;
public class Main
{
    public static void main(String[]args)
    {
        Scanner scan=new Scanner(System.in);
        long a=scan.nextInt();
        long b=scan.nextInt();
        long c1=(long)Math.sqrt(a*a+b*b);
        if(c1*c1==a*a+b*b)
        {
            System.out.print(c1);
            return;
        }
        if(a>b)
        {
            long c2=(long)Math.sqrt(a*a-b*b);
            if(c2*c2==a*a-b*b)
            {
                System.out.print(c2);
                return;
            }
        }
        if(a<b)
        {
            long c2=(long)Math.sqrt(b*b-a*a);
            if(c2*c2==b*b-a*a)
            {
                System.out.print(c2);
                return;
            }
        }
        System.out.print(-1);
    }
}

2、题目名称:最近的回文数

        回文数是一个非负整数,它的各位数字从高位到低位和从低位到高位的排列是相同的。 以下是一些回文数的例子: 0 1 33 525 7997 37273 现在给到一个数,求离它最近的一个回文数(离与它的差的绝对值最小)。如果这个数本身就是回 文数,那么就输出它本身。

解析:

        当时感觉有点蒙,想着能过一点测试样例就过一点,没想到都过了,测试样例太少了,这里用的是一个简单的双指针字符匹配,匹配最近的肯定是进制小的去匹配大的,看是做减法更近还是加法,如果加减都一样则选择不进位和借位的一种(这应该是有问题的,如果进位或借位使得前一位与高进制更近,则肯定过不了!)

import java.util.*;
public class Main
{
    public static void main(String[]args)
    {
        Scanner scan=new Scanner(System.in);
        String n=scan.nextLine();
        char[]ch=n.toCharArray();
        int len=n.length()-1;
        int l=0,r=len;
        while(l<r)
        {
            if(ch[l]!=ch[r])
            {
                if(ch[l]>ch[r])
                {
                    if(ch[l]-ch[r]<=ch[r]-ch[l]+10)ch[r]=ch[l];
                    else
                        {
                            ch[r-1]--;
                            ch[r]=ch[l];
                            l++;
                            r--;
                        }
                }
                else
                {
                    if(ch[r]-ch[l]<=ch[l]-ch[r]+10)ch[r]=ch[l];
                    else
                    {
                        ch[r-1]++;
                        ch[r]=ch[l];
                        l++;
                        r--;
                    }
                }
            }
            else
            {
                l++;
                r--;
            }
        }
        System.out.print(new String(ch));
    }
}

3,判断题:

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

A、对 B、错

解析:

这个真不知道,所以错了,答案选b

4,单选题:

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

A、约瑟夫•雅卡尔 B、万尼瓦尔•布什 C、克劳德•香农 D、康拉德·楚泽

解析:

答案选D,不是图灵,记得很清楚

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

A、得到了政府的资助,并且有得力的助手 B、使用了简单的逻辑 C、使用了大量的简单模块复制 D、采取了化繁为简的思想

解析:

一眼A,政府资助只能是外在成功因素

5,填空题:

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

我的理解:理论是图灵,实践是冯诺依曼

#############################################################################此次竞赛居然在榜上!?很是不解,测试案例有点少,错误代码都能通过全部,题的话还是喜欢之前的代码题,填空判断虽然简单但感觉没有精髓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值