Live2D

12届蓝桥杯javab组真题

12届蓝桥杯javab组真题

A,ASC

签到题

package train;

public class test_5 {
public static void main(String[] args){

    System.out.println('L'+0);
}
}

B,卡片

此题刚开始以为要用到10个循环各个都循环一遍,但是最后观察到,他们拼成的数必须是连续的,所以只需要判断1这个数的2021个用完没有如果用完了,那么就算其他的数的卡片有剩余也没有什么用,而且我们可以观察到,拼成1-10就总共拼成了十个数,所以能拼成几个数,就是拼成的最大数字,所以当1拼最后的那个数时就是最终答案

package train;

public class test_6 {
    public static void main(String [] args){
        int k=0;
        for(int i=1;i<20210;i++){
            String str=i+"";
            for(int j=0;j<str.length();j++){
                if(str.charAt(j)=='1')
                    k++;
            }
            if(k==2021) {
                System.out.println(str);
                break;
            }
            if(k>2021){
                System.out.println(Integer.parseint(str)-1);
                break;//需要加一个特判,有一用不完的情况,
            }
        }
    }
}

C,直线

此题利用Arrylist和Hashset来解出

其中Arrylist来储存所有的点,Hashset来去重,因为Hashset其中的特点有不储存重复的元素,所以计算出斜率和截距,化为最简储存之后在输出size就是能构造多少条直线了

package train;

import java.util.ArrayList;
import java.util.HashSet;

public class test_7 {
    public static int gcd(int m,int n){
        return n==0?m:gcd(n,m%n);
    }
    public static void main(String[] args)
    {
        ArrayList<Integer> list=new ArrayList<Integer>();
        for(int i=0;i<=19;i++)
            for(int j=0;j<=20;j++)
                list.add(i*100+j);
        HashSet<String> set=new HashSet<String>();
       for(int i=0;i<list.size();i++){
           int a=list.get(i);
           for(int j=i+1;j<list.size();j++){
               int b=list.get(j);
               int x=a/100;
               int y=a%100;
               int x1=b/100;
               int y1=b%100;
               int down=x1-x;
               int up=y1-y;
               int gcd=gcd(down,up);
               String s=(up/gcd)+"/"+(down/gcd);//求出斜率以分数形式求出最简
               //特判一个竖线的情况
               if(down==0){
                   set.add("x=="+x);
                   continue;
               }
               //计算截距
               //因为必须是分数形式为了避免小数,所以必须吧截距写为分数形式,
               int down1=y*down;
               int up1=x*up;
               int up2=down1-up1;
               int gcd1=gcd(up2,down);
               String s1=(up2/gcd1)+"/"+(down/gcd1);
             set.add(s+" "+s1);
           }
       }
       System.out.println(set.size());
    }
}

D,货物摆放

此题说实话在处理因子的时候发现超时实在太严重了,最后在csdn发现大佬的大数求因子的方法,才解出,其他的思路很简单

链接:csdn

package train;

import java.util.ArrayList;

public class test_8 {
    public static void main(String[] args){
        long n=2021041820210418l;
        ArrayList<Long>a=new ArrayList<Long>();
        //不知道因子有多少个,所以定义一个不知长度的数组
     long nn=1;
     int k=0;

     for(long i=1;i<Math.sqrt(n);i++){
         if(n%i==0) {
             a.add(i);
             a.add(n/i);

         }
     }
     //求一个很大数的因子的方法
        int res=0;
        for(int i=0;i<a.size();i++)
            for(int j=0;j<a.size();j++)
                for(int l=0;l<a.size();l++){
                    if(a.get(i)*a.get(j)*a.get(l)==n)
                        res++;
                }
        System.out.println(res);
    }
}

F,时间显示

此题,第一次竟然没过,最后发现hours/60,最后改成24,过了,对24取余取出多余的时间

package train;

import java.util.Scanner;

public class test_9 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        long a=sc.nextLong();
        long alls=a/1000;//总共的秒数
        long s=alls%60;
        long allm=alls/60;//总共的分钟
        long m=allm%60;
        long allh=allm/60;
        long h=allh%24;
        System.out.println(String.format("%02d:%02d:%02d",h,m,s));
    }
}

G,最少砝码

找规律的题,起初看的时候一点思路都没有,但是吧法玛组列出来,最后发现,只要输入的n小于砝码的重量和就可以称出来,而且砝码组也有自己的最优

砝码数: 1 2 3 4
砝码组: 1 1,3 1,3,9 1,3,9,27

就可以发现,砝码组的和=砝码组上一组的重量和*3+1,

下一组砝码组的新增砝码=上一组最后的砝码*3;

package train;

import java.util.Scanner;

public class test_10 {
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int k=1,total=1;
        while(total<n){
            total=total*3+1;
            k++;
        }
        System.out.println(k);
    }
}

H,杨辉三角形

posted @   dfs的秘密花园  阅读(123)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示