栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第十一届蓝桥杯大赛软件类省赛Java大学B组(第一场)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十一届蓝桥杯大赛软件类省赛Java大学B组(第一场)

分析:

方法一:手算,五个五个写,慢点写

方法二:上机写代码

代码:
import java.util.Scanner;
public class Main{ 
	public static void main(String[] args) {
		String str = "EaFnjISplhFviDhwFbEjRjfIBBkRyY"; // 加密后的字符
		String s1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 原字符
		String s2 = "yxmdacikntjhqlgoufszpwbrevYXMDACIKNTJHQLGOUFSZPWBREV"; // 加密后的字符
		for(int i=0;i 
答案: 

YeRikGSunlRzgDlvRwYkXkrGWWhXaA

分析:

方法一:计算器

36138 * 24 * 60

方法二:日期类

方法三:常规方法,判断是否是闰年再计算天数

代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date1=sf.parse("1921-7-23 12:0:0");
		Date date2 = sf.parse("2020-7-1 12:0:0");
		System.out.print((date2.getTime()-date1.getTime())/1000/60);
	}
}
import java.util.Date;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Date date1 = new Date(21, 6, 23, 12, 0, 0); // 1921  年:是减去1900得到的数    月:0-11     日:1-31
		Date date2 = new Date(120, 6, 1, 12, 0, 0); // 2020
		long time=date2.getTime()-date1.getTime();
		System.out.print((time/1000)/60);

	}
}

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		int day=0,i;
		for(i=1922;i<=2019;i++){
			if((i%400)==0||(i%4==0&&i%100!=0)){
				day+=366;
			}else{
				day+=365;
			}
		}
		day+=31-23+31+30+31+30+31; //1921年7月24日0点开始
		i=2020;
		if((i%400)==0||(i%4==0&&i%100!=0)){  //2020年7月1日24点结束
			day+=31+29+31+30+31+30+1;
		}else{
			day+=31+28+31+30+31+30+1;
		}
		System.out.print(day*24*60);
	}
}
答案:

52038720

分析:

设A国被测总人数n人,k人为一组,需要n/k个试剂盒子

感染人数0.01*n人,以最坏的情况分配试剂盒子,最多有0.01nk个试剂盒子需要重新检测

此时,总共需要检测n/k+0.01nk个试剂盒子

设y=n/k+0.01nk,n为定值,求k为多少时,y最小?

y=n(n/k+k/100) k=10时,y最小

代码: 答案:

10

分析: 代码:

分析:

BigInteger简直牛逼!就是费内存!

利用BigInteger里的a.gcd(b)方法求a和b的最大公约数

Scanner scanner = new Scanner(System.in);
BigInteger x = scanner.nextBigInteger();//可以接收int类型
BigInteger y = scanner.nextBigInteger();//也可以利用BigInteger.valueOf()将其他类型转换为BigInteger类型

BigInteger gcd = x.gcd(y);	//BigInteger自带的求最大公约数的方法

//BigInteger.valueOf()使用演示
int a = 10;
BigInteger b = BigInteger.valueOf(a);	
代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		BigInteger arr[] = new BigInteger[2025]; // int long型数据均会爆数组
		arr[0] = BigInteger.ZERO;
		arr[1] = arr[2] = BigInteger.ONE;
		for (int i = 3; i <= 2020; i++) {
			arr[i] = arr[i - 1].add(arr[i - 2]);   //BigInteger的加减乘除 与或非 等于 都有 .****   可以自己才eclipse查看(直接. 就会出现很多方法)
		}
		for (int i = 1; i <= 7; i++) { // 输出斐波那契数组的元素值 验证
			System.out.println(i + ": " + arr[i]);
		}
		System.out.println(arr[520]);
		System.out.println(arr[2020]);
		System.out.println(arr[2020].mod(arr[520]));
		System.out.println(arr[2020].gcd(arr[520]));
//		System.out.println(gcd(arr[2020],arr[520]));
	}
 
//	public static BigInteger gcd(BigInteger a, BigInteger b) {
//		return b.equals(BigInteger.ZERO) ? a : gcd(b, a.mod(b));
//	//	if (b.compareTo(BigInteger.ZERO) == 0) {
//	//		return a;
//	//	}
//	//	return gcd(b, a.mod(b));
//	}
}

分析:

大写字母、小写字母、数字、其他

代码:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {        
    	Scanner sc=new Scanner(System.in);
		String str=sc.next();
		int dx=0,xx=0,sz=0;
		for(int i=0;i='A'&&str.charAt(i)<='Z'){
				dx++;
			}else if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
				xx++;
			}else if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
				sz++;
			}
		}
		System.out.println(dx);
		System.out.println(xx);
		System.out.println(sz);
    }
}

分析: 方法一:

举例:

(2+5+7+9)%3=2

转换》》

2%3=2, 5%3=2, 7%3=1, 9%3=0

2+2+1+0=5%3=2

都能得到2,但是,万一2+2+1+0加起来的数超过了long所能存储的范围了呢? 行不通,继续转换

转换》》

2%3=2, 5%3=2, 7%3=1, 9%3=0

(2+2)%3=1 (1+1)%3=2 (2+0)%3=2

行了!这不都保证小于3了嘛!

利用好取模公式:ab mod c=((a mod c)(b mod c)) mod c

加法也一样,每两两取模

注意事项:
double的范围大。强转有损失

方法二:

biginteger yyds

多大的数都能接受,可以不用上面的相加时取余和单个数取余。

代码:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {        
    	Scanner sc=new Scanner(System.in);
    	int n=sc.nextInt();
    	long sum=0L;
    	for(int i=1;i<=n;i++){
    		long s1=i*1L;
    		//long s2=s1;
    		for(int j=1;j<=3;j++){
    			s1=(s1*s1)%123456789L;  	 //两两相乘取模		
    			//s2=(long)Math.pow(s2,2)%123456789;   //double的范围大。强转有损失
    		}
    		//sum+=(long)Math.pow((long)Math.pow((long)Math.pow(i,2)%123456789L,2)%123456789L,2)%123456789L;
    		sum+=s1;
    		sum%=123456789L;
    	}
    	System.out.print(sum);
    }
}
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		BigInteger sum=BigInteger.ZERO;
		for(int i=1;i<=n;i++){
			BigInteger s=BigInteger.valueOf(i);
			s=s.pow(8);
			s=s.mod(BigInteger.valueOf(123456789));
			sum=sum.add(s);
			sum=sum.mod(BigInteger.valueOf(123456789));
		}
		System.out.print(sum);
	}
}
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		BigInteger sum=BigInteger.ZERO;
		for(int i=1;i<=n;i++){
			BigInteger s=BigInteger.valueOf(i);
			s=s.pow(8);
			sum=sum.add(s);
		}
		sum=sum.mod(BigInteger.valueOf(123456789));
		System.out.print(sum);
	}
}

分析:

字典序要最大

如果i为1 、2并且与下一个字符加起来的数字小于26,两个数字组成一个字母

如果i > = 3 ,或者 大于26 ,一个数字组成一个字母

代码:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {        
    	Scanner sc=new Scanner(System.in);
		String str=sc.next();
		StringBuilder s=new StringBuilder();
		for(int i=0;i 

分析: 代码:

分析: 代码:
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号