Java每天进步一点点之蓝桥杯题目

题目一  合并检测

该题代码的版权声明
版权声明:本文为CSDN博主「罡罡同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46625346/article/details/112771529

package pk1;

public class hebingjiance {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		//假设A国有100个人,则有一个感染者
   int min =100;    //最多需要100盒试剂
   int ans=0;
   for(int k=1;k<=100;k++){
	   int temp;
	   if(100%k!=0){temp=100/k+k+1; }
	   else{temp=100/k+k;}
	   if(min>temp){
		   min=temp;
		   ans=k;
	   }
   }
   System.out.println(ans);
	}

}

结果

10 

题目二 分配口罩

该题代码的版权声明

版权声明:本文为CSDN博主「这!就是阿光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_47256162/article/details/110479953

package pk1;

public class fenpeikouzhao {
	public static long res=Long.MAX_VALUE;
	public static long num[]={9090400, 8499400, 5926800, 8547000, 4958200,
			   				  4422600, 5751200, 4175600, 6309600, 5865200, 
			   				  6604400, 4635000, 10663400, 8087200, 4554000
							}; 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		dfs(0, 0, 0);
    	System.out.println(res);
	}
    public static void dfs(int k,long sum1,long sum2 ) {
    	if(k==15) {
    		res=res<Math.abs(sum1-sum2)?res:Math.abs(sum1-sum2);
    		return;
    	}
    	dfs(k+1, sum1+num[k], sum2);
    	dfs(k+1, sum1, sum2+num[k]);
	}

}

结果

2400 

题目三 

package pk1;

import java.math.BigInteger;

public class zuidagongyueshu {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		//因为数太大必须用BigInteger定义变量
		BigInteger a=new BigInteger("1");
		BigInteger b=new BigInteger("1");
		BigInteger c=new BigInteger("1");
		BigInteger d=new BigInteger("1");
		BigInteger sum1=new BigInteger("0");
		BigInteger sum2=new BigInteger("0");
		
		//用两个for循环分别求出F520和F2020
	    for(int x=3;x<=520;x++)
	    {
	    	sum1=a.add(b);
	    	a=b;
	    	b=sum1;
	    }
	    for(int y=3;y<=2020;y++)
	    {
	    	sum2=c.add(d);
	    	c=d;
	    	d=sum2;
	    }
	   
	    //用辗转相除法求最大公约数
	    BigInteger temp;
		while(sum1!=BigInteger.ZERO)
		{
			temp=sum2.mod(sum1);
			sum2=sum1;
			sum1=temp;
		}
		System.out.println(sum2);
	}

}

结果

6765

题目四

package pk1;
import java.util.Scanner;
public class Main {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		//输入字符串
      @SuppressWarnings("resource")
	Scanner input=new Scanner(System.in);
      String str=input.next();
      //数组遍历方法,a求大写字母个数,b求小写字母个数,c求数字个数
      int a=0,b=0,c=0;
      for (int i=0;i<str.length();i++){
    	  if((int) str.charAt(i)>=(int)'A'&&(int) str.charAt(i)<=(int)'Z')
    	  {a++;}
    	  if((int) str.charAt(i)>=(int)'a'&&(int) str.charAt(i)<=(int)'z')
    	  {b++;}
    	  if((int) str.charAt(i)>=(int)'0'&&(int) str.charAt(i)<=(int)'9')
    	  {c++;}
      }
      System.out.println(a);
      System.out.println(b);
      System.out.println(c);
	}	
}

 结果

AS146zsd
2
3
3
 

题目五

package pk1;

import java.util.Scanner;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
     //输入正整数n
	@SuppressWarnings("resource")
	Scanner input=new Scanner(System.in);
    int n=input.nextInt();
    
    //利用for循环先求和再取余
    int sum=0;
    int anser=0;
    for(int i=0;i<n+1;i++){
    	sum+=Math.pow(i,8);
    }
    	anser=sum%123456789;
    	System.out.println(anser);
	}

}

测试 

5
462979

题目六 字符串编码

该题代码的版权声明

版权声明:本文为CSDN博主「毛毛虫不想努力了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44864169/article/details/115500437

package pk1;
import java.util.Scanner;
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		char[] chars = new char[27];//下标对应字母的数组
        for(int i = 1;i<=26;i++){
            chars[i]= (char) ('A'+i-1);
        }

        @SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
        String s  = sc.next();
        int [] nums =new int[20000];//
        //遍历字符串判断其中是否有"0"并将其存储到对应下标的nums数组中
        for (int i=0;i<s.length();i++){
            if (s.charAt(i)=='0'){
                nums[i]=i;
            }
        }
        int te =0;//记录当前0的位置
        //这两个for循环可处理完数字序列中的多个0,但如果最后一个0后面还有数字序列,则无法处理,留给下面的循环处理
        for (int i = 0;i<s.length();i++){//外层循环遍历的是nums数组,找到"0"出现的下标
            if (nums[i]!=0){
                for (int j = te;j<i-1;j++){//内层循环遍历的是字符串,通过外层遍历得到的"0"下标,在循环到该下标前一个时,就停下,在内循环外特殊处理"0"
                    if (j+1<i-1){
                        StringBuilder t  = new StringBuilder("" + s.charAt(j));
                        t.append(s.charAt(j+1));
                        int temp =Integer.parseInt(String.valueOf(t));
                        if (temp>26){
                            System.out.println(chars[Integer.parseInt(""+s.charAt(j))]);
                        }else{
                            System.out.println(chars[temp]);
                            j++;
                        }
                    }else{
                        System.out.print(chars[Integer.parseInt(""+s.charAt(j))]);
                    }

                    }
                System.out.print(chars[Integer.parseInt(String.valueOf(new StringBuilder("" + s.charAt(i - 1) + s.charAt(i))))]);

            te=i+1;
            }
        }
        //如果最后一个0后还有数字序列,或者数字序列中一个0也没有,将在这个循环中处理
        for (int j = te;j<s.length();j++){
            if (j+1<s.length()){
                StringBuilder t  = new StringBuilder("" + s.charAt(j));
                t.append(s.charAt(j+1));
                int temp =Integer.parseInt(String.valueOf(t));
                if (temp>26){
                    System.out.print(chars[Integer.parseInt(""+s.charAt(j))]);
                }else{
                    System.out.print(chars[temp]);
                    j++;
                }
            }else{
                System.out.print(chars[Integer.parseInt(""+s.charAt(j))]);
            }
        }
	}

}

 测试

120769
ATGFI

 再次声明,有三题转载已申明版权,其他三题原创。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值