0109 蓝桥杯真题12
创始人
2024-03-01 08:56:03
0

 

 

 

 

 

 

 

 

 

/*
 * 观察下面的现象,某个数字的立方,按位累加仍然等于自身。
 * 1^3 = 1 
 * 8^3  = 512    5+1+2=8
 * 17^3 = 4913   4+9+1+3=17
   ...
 *请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
 *填写该数字,不要填写任何多余的内容或说明性的文字。

 */
public class _048立方变自身 {
    private static int count;

    public static void main(String[] args) {
        for(int i = 1;i < 99;i++) {
            int i1 = i * i * i;
            int res = f(i1);
            if (res == i) {
                System.out.println(i + " " + i1);
                count++;
            }
        }
        System.out.println(count);
    }
    
    //按位累加
    private static int f(int x) {
        String str = String.valueOf(x);//转为字符串
        int sum = 0;
        for(int i = 0;i < str.length();i++) {
            sum += str.charAt(i) - '0';//转为整型
        }
        return sum;
    }
}

/*
 * 观察下面的加法算式:

      祥瑞生辉
  +   三羊献瑞
----------------------
    三羊生瑞气
    
 * 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
 * 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
 * 
 * 思路
 *       a b c d
 * +  e f g b
 * --------------
 *     e f c b i
 * 
 * 易知
 * e=1,a=9,f=0,c=b+1,c+g>10
 */
public class _049三羊献瑞 {
    public static void main(String[] args) {
        for(int b = 2;b < 9;b++) {
            for(int d = 2;d < 9;d++) {
                if (b == d) {
                    continue;
                }
                for(int g = 2;g < 9;g++) {
                    if (g == b || g == d) {
                        continue;
                    }
                    int c = b + 1;
                    if (c == b || c == d || c ==g) {
                        continue;
                    }
                    if (c + g <= 10) {
                        continue;
                    }
                    
                    
                    int sum = 9000 + b * 100 + c * 10 + d + 1000 + g * 10 + b;
                    for(int i = 2;i < 9;i++) {
                        if (i == b || i == d || i == g || i == c) {
                            continue;
                        }
                        if (sum <= (10000 + c * 100 + b * 10 + i) &&
                            sum >= (10000 + c * 100 + b * 10 + i)) {
                            System.out.printf("%2d%d%d%d\n",9,b,c,d);
                            System.out.printf("%2d%d%d%d\n",1,0,g,b);
                            System.out.printf("%d\n",sum);
                        }
                    }
                }
            }
        }
    }
}
 

/*
 * 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
 * 下面的程序实现了该功能,请填写划线部分缺失的代码。
 * 
    public class A{
    public static void test(int[] x) {
        int a = x[0] * 1000 + x[1] * 100 + x[2] * 10 + x[3];
        int b = x[4] * 10000 + x[5] * 1000 + x[6] * 100 + x[7] * 10 + x[8];
        if (a * 3 == b)
            System.out.println(a + " " + b);
    }

    public static void f(int[] x, int k) {
        if (k >= x.length) {
            test(x);
            return;
        }

        for (int i = k; i < x.length; i++) {
            {int t = x[k];x[k] = x[i];x[i] = t;}
            f(x, k + 1);
            ———————————————————————————————————— // 填空
        }
    }

    public static void main(String[] args) {
        int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        f(x, 0);
    }
}

 * 思路
 * 全排列,回溯
 */
public class _050九数组分数 {
    public static void test(int[] x) {
        int a = x[0] * 1000 + x[1] * 100 + x[2] * 10 + x[3];
        int b = x[4] * 10000 + x[5] * 1000 + x[6] * 100 + x[7] * 10 + x[8];
        if (a * 3 == b)
            System.out.println(a + " " + b);
    }

    public static void f(int[] x, int k) {
        if (k >= x.length) {
            test(x);
            return;
        }

        for (int i = k; i < x.length; i++) {
            {int t = x[k];x[k] = x[i];x[i] = t;}
            f(x, k + 1);
            {int t = x[k];x[k] = x[i];x[i] = t;}//回溯
        }
    }

    public static void main(String[] args) {
        int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        f(x, 0);
    }
}

import java.util.Scanner;
/*
 * 乐羊羊饮料厂正在举办一次促销优惠活动。
 * 凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。
 * 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,
 * 那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。
 * 
 * 输入:一个整数n,表示开始购买的饮料数量(0  * 输出:一个整数,表示实际得到的饮料数

    用户输入:
    100
    程序应该输出:
    149
    
    
    用户输入:
    101
    程序应该输出:
    151
    
 */
public class _051饮料换购 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;
        while(n >= 3) {
            n -= 2;
            count += 3;
        }
        count += n;
        System.out.println(count);
    }
}

 

 

 

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...