首页 > 编程语言 >12届蓝桥杯javab组真题

12届蓝桥杯javab组真题

时间:2023-01-17 19:45:34浏览次数:73  
标签:组真题 12 String int long 蓝桥 砝码 static public

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,杨辉三角形

标签:组真题,12,String,int,long,蓝桥,砝码,static,public
From: https://www.cnblogs.com/dfsdd/p/17058589.html

相关文章

  • P3226 [HNOI2012]集合选数
    简要题意给你一个\(n\)个元素的集合,它由前\(n\)个正整数构成。你需要求出它有多少个非空子集,满足若\(x\)在这个子集中,\(2x,3x\)不能在子集中。由于答案可能很大,你......
  • 浏览器防F12审查
    法1插件f12.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><meta......
  • Linux 驱动像单片机一样读取一帧dmx512串口数据
    硬件全志R528目标:实现Linux 读取一帧dmx512串口数据。问题分析:因为串口数据量太大,帧与帧之间的间隔太小。通过Linux自带的读取函数方法无法获取到帧头和帧尾,读取到的数......
  • java时间格式24小时制12小时制
    Calendar类也可方便的区分24和12小时机制Calendardate=Calendar.getInstance();date.get(Calendar.HOUR_OF_DAY);//得到24小时机制的date.get(Calendar.HOUR);//得到......
  • 12. Pytest常用插件: pytest-rerunfailures失败用例重跑
    一、前言测试环境不稳定偶发接口超时(和服务无关,纯粹是环境问题),然后执行接口case也因此偶发失败。比如同一个接口case跑五次,其中有两次失败,另外三次都是成功的,这种偶发性的......
  • 12.Requests【接口请求】requests模拟cookies传参
    一、前言Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来......
  • FMC DA子卡设计原理图:FMCJ465-2路 16bit 12.6GSPS FMC DA子卡
    FMCJ465-2路16bit12.6GSPSFMCDA子卡一、板卡概述:   FMCJ465是一款转换速率最高为12.6GSPS的 DAC回放板,DAC位数16bit; 板卡基于ADI的AD9172系列......
  • 12.Selenium【元素操作】模拟操作页面元素
    一、前言前面的课程我们已经学习了定位元素的八大方法,其实在实际工作中只需掌握xpath定位即可满足工作需求。定位元素后,我们得到一个元素对象,从这节课开始我们开始针对这......
  • OI 2012
    目录OI2012NOIP2179[NOI2012]骑行川藏ProblemHintSolutionCTSC清华集训2012P5933[清华集训2012]串珠子ProblemSolutionHAOIP2220[HAOI2012]容易题ProblemSolutionP222......
  • 12_百钱买百鸡
    思路:用循环遍历所有条件,注意每层循环结果终止条件为100钱最大化买鸡的数量(向下取整//)+1(range的最后一位取不到)#12百钱买百鸡foriinrange(1,int(100/5)+1):#公鸡最大......