【第一天】蓝桥杯备战

  • 1、 门牌号
  • 2、卡片
  • 3、分数

1、 门牌号

https://www.lanqiao.cn/problems/592/learning/
【第一天】蓝桥杯备战_第1张图片
解法一:暴力遍历

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        scan.close();
         int count = 0;
         for(int i = 1 ; i <= 2020 ; i++) {
           int num = i;
           while(num > 0) {
             if(num % 10 == 2) {
               count++;
             }
             num /= 10;
           }
         }
         System.out.println(count);
    }
}

解法二:遍历从1~2020,将每个数字转化为字符串,遍历字符串,记录有多少个‘2’

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int count = 0;
        for(int i = 0;i <= 2020; i++){
          String str = String.valueOf(i);
          for(int j = 0;j < str.length(); j++){
            if(str.charAt(j) == '2')
              count++;
          }
        }

        System.out.print(count);
        scan.close();
    }
}

2、卡片

https://www.lanqiao.cn/problems/1443/learning/
【第一天】蓝桥杯备战_第2张图片
解法:先创建一个元素个数为10数组,使数组每个元素初始化为2021,从1开始计数,数字里有的数字对应的数组下标-1,直到要减的数字对应数组下标的值已<0,停止程序。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main 
{
    public static void main(String[] args) 
    {
        int num[]= new int[10];
        for(int i = 0 ; i< 10; i++ ) {
          num[i]=2021;
        }
        int temp=0;
        int b = 0;
        for(int i=1;;i++)
        {
          temp=i;
          while(temp!=0)
          {
            b=temp%10;
            num[b]--;
            if(num[b]<0)
            {
              System.out.println(i-1);
              return;
            }
              
            temp=temp/10;
          }
        }
    }
}

3、分数

https://www.lanqiao.cn/problems/610/learning/
【第一天】蓝桥杯备战_第3张图片
解法一:运用数学知识,分为分子和分母,依次计算

public class Main
{
  public static void main (String[] args)
  {
    int firstfm = 1, firstfz = 1;
    int num = 0;
    for (int i = 1; i < 20; i++)
    {
       firstfm *= 2;
       firstfz += firstfm;
    }
    System.out.printf ("%d/%d\n",firstfz,firstfm);
  }
}

解法二:根据逻辑推理,直接得出答案

public class Main
{
  public static void main (String[] args)
  {
    System.out.printf (39/20);
  }
}

你可能感兴趣的:(蓝桥杯备战刷题,蓝桥杯,java,算法)