蓝桥杯真题,请你找到最小的整数 X 同时满足: * • X 是 2019 的整倍数 * • X 的每一位数字都是奇数 * 【答案提交】 * 这是一道结果填空的题,你只需要算出结果后提交即可。本

  1. 平方末尾
    能够表示为某个整数的平方的数字称为“平方数”
    比如,25,64
    虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。
    因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。
    所以,4325435332必然不是平方数。
    如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗?
    请计算一下,一个2位以上的平方数的最后两位有多少种可能性?

思路分析:

  1. 先创建Set集合,用于存储和统计可能性
    ○ Set集合可以去重

  2. 因为是否为平方数,只和末尾两位有关系,所以我们只需要验证 10~100的平方即可
    public class 平方末尾 {

    public static void main(String[] args) {
    Set set = new HashSet<>();//创建set集合

     //在10 ~100的平方找出末两位
     for(int i = 10;i<100;i++){
         int length = String.valueOf(i * i).length();//获取平方数的长度
         String str = String.valueOf(i*i).substring(length-2,length);//截取平方数的末尾两位 100 sub(3-2=1) (1,3)
         set.add(str);//统计末尾两位数的情况.
     }
     System.out.println(set.size());
    

    }

}
2. 全排列问题
有ABCDE五个字母,他们之间一共可以组成多少种顺序不同的组合(字母不能重复)
思路分析

import java.util.Stack;

/**

  • abc 多少种组合排序
    */
    public class _C全排列 {

    static int count = 0; //用于记录有多少种组合
    public static void main(String[] args) {
    //创建数组用于存放abcde
    char c[] = new char[3];
    //创建一个bool类型数据,用于标记 a b c d e是否
    boolean b[] = new boolean[c.length];

     f(0,c,b);
    

    }
    public static void f(int step,char c[],boolean b[]){
    if(step == 3){ //等于5时说明完成一次组合
    //打印数组
    for(char c1:c){
    System.out.print(c1+" ");
    }
    System.out.println();
    count++;
    }
    //循环遍历组合
    for(int i =0;i<c.length;i++){ //
    if(!b[i]){ //如果某一位还没有被选中过
    c[step] = (char) (i+‘a’);
    b[i] = true; //被选中过,标记为true
    f(step+1,c,b);
    b[i] = false;//回溯
    }
    }
    }
    }

  1. 背包问题(动态规划)
    package com.atguo.demo;

/**

  • 01背包问题的描述:

  • 有编号分别为a,b,c,d,e的五件物品,

  • 它们的重量分别是2,2,6,5,4,

  • 它们的价值分别是6,3,5,4,6,

  • 现在给你个承重为10的背包,如何让背包里装入的物品具有最大的价值总和?
    */
    public class DpATest {
    static int f[][] = new int[5][9];
    static int w[] = {0,2,3,4,5};
    static int v[] = {0,3,4,5,8};

    public static void main(String[] args) {
    for(int i = 1;i<5;i++){ //i件物品
    for(int j = 1;j<9;j++){ //j:背包的容量
    if(w[i]>j){
    f[i][j] = f[i-1][j];
    }else{
    f[i][j] = Math.max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
    }
    }
    }

     for(int i = 1;i<5;i++){
         System.out.println();
         for(int j = 1;j<9;j++){ //j:背包的容量
             System.out.print(f[i][j]+" ");
         }
     }
    
     System.out.println(f[4][8]);
    

    }

}
4. 年龄问题(简单遍历)

/**

  • s夫人一向很神秘。这会儿有人问起她的年龄,她想了想说:

  • “20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍”。

  • 你能算出s夫人现在的年龄吗?
    */
    public class _01年龄问题 {
    public static void main(String[] args) {

     for(int i = 1;i<100;i++){
         for(int j = 1;j<100;j++){
             if((i-20) == (j-20)*2 && i == j*1.5 ){
                 System.out.println(i+" "+j);
             }
         }
     }
    

    }

  1. 奇数倍数

/**

  • 请你找到最小的整数 X 同时满足:

  • • X 是 2019 的整倍数

  • • X 的每一位数字都是奇数

  • 【答案提交】

  • 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

  • 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
    */
    public class _A奇数倍数 {
    public static void main(String[] args) {
    int x = 2019;
    while (true){
    if(f(x)){
    System.out.println(x);
    return;
    }
    x+=2019;
    }
    }
    //比较个位数
    public static boolean f(int n ){
    int x = n;
    while (x!=0){
    if(f1(x%10)){//如果有一个偶数
    return false;
    }
    x/= 10;
    }
    return true;
    }

    public static boolean f1(int n1){
    return (n1&1)!=1;//偶数返回true
    }
    }

  1. 七星末尾(回溯)
    package com.atguo.demo2016;

import java.util.HashSet;
import java.util.Set;

/**

  • 能够表示为某个整数的平方的数字称为“平方数”

  • 比如,25,64

  • 虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。

  • 因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。

  • 所以,4325435332必然不是平方数。

  • 如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗?

  • 请计算一下,一个2位以上的平方数的最后两位有多少种可能性?
    */
    public class 平方末尾 {

    public static void main(String[] args) {
    Set set = new HashSet<>();//创建set集合

     //在10 ~100的平方找出末两位
     for(int i = 10;i<10000;i++){
         int length = String.valueOf(i * i).length();//获取平方数的长度
         String str = String.valueOf(i*i).substring(length-2,length);//截取平方数的末尾两位 100 sub(3-2=1) (1,3)
         set.add(str);//统计末尾两位数的情况.
     }
    
     System.out.println(set.size());
    

    }

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值