目 录CONTENT

文章目录

2020年太原市职工职业技能竞赛-程序员场赛

芈亓
2020-01-18 / 0 评论 / 0 点赞 / 354 阅读 / 3,051 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目一

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是对的!!因为 36 * 495 = 396 * 45 = 17820 类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54 假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0) 能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。注意:只提交一个表示最终统计种类数的数字,提交解答过程和计算结果图。

操作内容:

package com.jeesite.modules.aaa;

public class Test {

    public static void main(String[] args) {
        int temp=0;//计算总数
        for(int a=1;a<10;a++)
        {
            for(int b=1;b<10;b++)
            {
                if(b!=a)
                {
                    for(int c=1;c<10;c++)
                    {
                        if(c!=a&&c!=b) {
                            for(int d=1;d<10;d++)
                            {
                                if(d!=a&&d!=b&&d!=c)
                                {
                                    for(int e=1;e<10;e++)
                                    {
                                        if(e!=a&&e!=b&&e!=c&&e!=d)
                                        {
                                            int flag1=a*10+b;
                                            int flag2=c*100+d*10+e;
                                            int flag3=a*100+d*10+b;
                                            int flag4=c*10+e;
                                            if(flag1*flag2==flag3*flag4)
                                            {
                                                temp++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        System.out.println(temp);
    }


}

此题运行结果如下: 142
image-1647569604544

题目二

福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:

ABCDE * ? = EDCBA

他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”

华生:“我猜也是!”

于是,两人沉默了好久,还是没有算出合适的结果来。

请你利用计算机的优势,找到破解的答案。

把 ABCDE 所代表的数字写出来。

思路:循环遍历每个字母可能的情况。

操作内容:

package com.jeesite.modules.aaa;

import java.util.ArrayList;
import java.util.List;

public class Test2 {

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        int n = 5;
        for (int i = 0; i < n; i++) {
            list.add(0);
        }

        create(list, n);

    }

    // 产生一个五位数,每位数字都不相同

    private static void create(List<Integer> list, int n) {
        if (n <= 0) {
            jisuan(list);
            return;
        }

        for (int i = 1; i <= 9; i++) {
            if (!list.contains(i)) {
                list.set(list.size() - n, i);
            } else {
                continue;
            }
            create(list, n - 1);
            list.set(list.size() - n, 0);
        }

    }

    // 计算是否符合条件
    private static void jisuan(List<Integer> list) {
        if (list.get(4) > list.get(0)) {//产生的数字只有个位比万位大,才有可能符合条件,所以其他情况不用做计算
            int result = list.get(0) * 10000 + list.get(1) * 1000 + list.get(2)
                    * 100 + list.get(3) * 10 + list.get(4);

            int b = fanzhuan(result);

            if (b % result == 0) {
                System.out.println(result);
            }
        }

    }

    // 反转数字
    private static int fanzhuan(int i) {
        String s = i + "";
        String ss = "";
        for (i = 0; i < s.length(); i++) {
            ss = s.charAt(i) + ss;
        }

        return Integer.parseInt(ss);
    }
}

此题运行结果如下: 21978
image-1647569643668

题目三

Description

在舞蹈比赛中,三名舞者可以组成一支舞队,现在一共有N+M名舞者,其中有N名舞者擅长芭蕾,剩下M名舞者擅长街舞,这些舞者要参加舞蹈竞赛,比赛要求每支舞队至少有一名擅长芭蕾和一名擅长街舞的舞者,通过编程计算,N+M名舞者最多可以组成多少支舞蹈队?

Input

输入两个整数M,N,其中1<N,M<10000000

Output

最多可以组成的舞蹈队数

Sample Input 1

10 160

Sample Output 1

10

操作内容:

网页提交版本:


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int m, n;
        do {
            Scanner in = new Scanner(System.in);
            n = in.nextInt();
            m = in.nextInt();
        } while (n <= 1 && m >= 10000000);
        int count = 0;
        while (n > 0 && m > 0) {
            n--;
            m--;
            if (n > m) {
                n--;
            } else {
                m--;
            }
            if (n >= 0 && m >= 0) {
                count++;
            }
        }
        System.out.println(count);
    }
}

 

本地运行代码:

package com.jeesite.modules.aaa;

import java.util.Random;
import java.util.Scanner;

public class Test3 {

    public static void main(String[] args) {
        int m, n;
        do {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入第一个数据(1<N):");
            n = in.nextInt();
            System.out.println("请输入第二个数据(M<10000000):");
            m = in.nextInt();
        } while (n <= 1 && m >= 10000000);
//        System.out.println(N+" "+M);
        int count = 0;
        while (n > 0 && m > 0) {
            n--;
            m--;
            if (n > m) {
                n--;
            } else {
                m--;
            }
            if (n >= 0 && m >= 0) {
                count++;
            }
        }
        System.out.println("N+M名舞者最多可以组成"+count+"支舞蹈队");
    }
}

此题运行结果如下:
image-1647569704616

0

评论区