第六届蓝桥杯JavaB组省赛真题

解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论

题目1、三角形面积

题目描述
如图1所示。图中的所有小方格面积都是1。
那么,图中的三角形面积应该是多少呢?

请填写三角形的面积。不要填写任何多余内容或说明性文字。

在这里插入图片描述

28
简单的数学平面几何问题:
大正方形面积-三个三角形面积 = 最终结果
题目2、立方变自身

题目描述
观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1
8^3 = 512 5+1+2=8
17^3 = 4913 4+9+1+3=17

请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?

请填写该数字,不要填写任何多余的内容或说明性的文字。

结果:6

public class Main {
    
    //暴力枚举,轻易可知,当n > 100时,一定没有符合题意正整数,原因:100^3共7位置,7*9<100,依次类推
    
    
    public static void main(String[] args) {
        int count = 0;
        for(long i = 1;i <= 100000;i++) {  //此处使用较大数据检测猜测
            long temp = i * i * i;
            long temp1 = 0;
            while(temp > 0) {
                temp1 += (temp % 10);
                temp = temp / 10;
            }
            if(i == temp1) {
                System.out.println("i = "+i+", i^3 = "+(i*i*i));
                count++;
            }
        }
        System.out.println(count);
    }
}
题目3、三羊献瑞

题目描述
观察下面的加法算式:

  祥 瑞 生 辉
  • 三 羊 献 瑞

三 羊 生 瑞 气

(如果有对齐问题,可以参看【图1.jpg】)

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
在这里插入图片描述

结果:1085

import java.util.Arrays;

public class Main {
    
    public static boolean judge(int[] A) {
        int[] tempA = new int[A.length];
        for(int i = 0;i < A.length;i++)
            tempA[i] = A[i];
        Arrays.sort(tempA);   //对tempA元素进行从小到大排序
        for(int i = 1;i < tempA.length;i++) {
            if(tempA[i - 1] == tempA[i])
                return false;
        }
        return true;
        
    }
    
    public static boolean judge1(int[] A, int[] B) {
        int[] temp = new int[A.length + B.length - 1];
        int i = 0;
        for(;i < A.length;i++)
            temp[i] = A[i];
        for(;i < temp.length;i++)
            temp[i] = B[i - A.length];
        Arrays.sort(temp);
        for(i = 1;i < temp.length;i++) {
            if(temp[i - 1] == temp[i])
                return false;
        }
        return true;
    }
    
    
    public static void main(String[] args) {
        for(int i = 1000;i <= 9999;i++) {
            int[] A = new int[4];
            A[0] = i / 1000;
            A[1] = i / 100 % 10;
            A[2] = i / 10 % 10;
            A[3] = i % 10;
            if(judge(A) == false)
                continue;
            for(int j = 1000;j <= 9999;j++) {
                int[] B = new int[4];
                B[0] = j / 1000;
                B[1] = j / 100 % 10;
                B[2] = j / 10 % 10;
                B[3] = j % 10;
                if(judge(B) == false)
                    continue;
                if(B[3] != A[1])
                    continue;
                if(judge1(A, B) == fal
  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值