蓝桥杯第十四届2023

1、阶乘求和

【问题描述】

令 = 1! + 2! + 3! + ... + 202320232023! ,求 的末尾 9 位数字。

提示:答案首位不为 0 。

import java.math.*;  
import java.util.*;  
  
public class Main {  
   public static void main(String[] args) {  
       BigInteger s1=BigInteger.ZERO;
       BigInteger s2=BigInteger.ONE;
       int i;
       for(i=1;i<=40;i++) {
    	   for(int j=1;j<=i;j++) {
    		   s2=s2.multiply(BigInteger.valueOf(j));
    	   }
    	   s1=s1.add(s2);
    	   s2=BigInteger.ONE;
    	   System.out.println(s1);
       }
   }  
}

 2、幸运数字

【问题描述】
哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整 数。例如 126 是十进制下的一个哈沙德数,因为 (126) 10 mod (1+2+6) = 0 ; 126 也是八进制下的哈沙德数,因为 (126) 10 = (176) 8 , (126) 10 mod (1 + 7 + 6) = 0 ; 同时 126 也是 16 进制下的哈沙德数,因为 (126) 10 = (7 e ) 16 , (126) 10 mod (7 + e ) = 0 。小蓝认为,如果一个整数在二进制、八进制、十进制、十六进制下均为 哈沙德数,那么这个数字就是幸运数字,第 1 至第 10 个幸运数字的十进制表示 为:1 , 2 , 4 , 6 , 8 , 40 , 48 , 72 , 120 , 126 . . . 。现在他想知道第 2023 个幸运数 字是多少?你只需要告诉小蓝这个整数的十进制表示即可。

import java.math.*;
import java.util.*;
public class Main {
   public static void main(String[] args) {
       int count=0;
       int i=1;
       while(count!=2023) {
    	   int t=0;
    	   int j=i;
    	   while(j!=0) {//十进制
    		   t+=j%10;
    		   j/=10;
    	   }
    	   if(i%t==0) {
    		   int k=i;
    		   int t1=0;
    		   while(k!=0) {//八进制
    			   t1+=k%8;
    			   k/=8;
    		   }
    		   if(i%t1==0) {
    			   int l=i;
    			   int t2=0;
    			   while(l!=0) {//十六进制
    				   t2+=l%16;
    				   l/=16;
    			   }
    			   if(i%t2==0) {
    				   int m=i;
    				   int t3=0;
    				   while(m!=0) {//二进制
    					   t3+=m%2;
    					   m/=2;
    				   }
    				   if(i%t3==0) {
    					   count++;
    				   }
    			   }
    		   }
    	   }
    	   i++;
    	   
       }
       System.out.println(i-1);
   }
}

3、数组分割

4、矩形总面积

【问题描述】
平面上有个两个矩形 R 1 和 R 2 ,它们各边都与坐标轴平行。设 ( x 1 , y 1 ) 和 (x 2 , y 2 ) 依次是 R 1 的左下角和右上角坐标, ( x 3 , y 3 ) 和 ( x 4 , y 4 ) 依次是 R 2 的左下 角和右上角坐标,请你计算 R 1 和 R 2 的总面积是多少?
注意:如果 R 1 和 R 2 有重叠区域,重叠区域的面积只计算一次。
【输入格式】
输入只有一行,包含 8 个整数,依次是: x 1 , y 1 , x 2 , y 2 , x 3 , y 3 , x 4 和 y 4 。
【输出格式】
一个整数,代表答案。
【样例输入】
2 1 7 4 5 3 8 6
【样例输出】
22

import java.math.*;
import java.util.*;
public class Main {
   public static void main(String[] args) {
       Scanner scan=new Scanner(System.in);
       int x1=scan.nextInt();
       int y1=scan.nextInt();
       int x2=scan.nextInt();
       int y2=scan.nextInt();
       int x3=scan.nextInt();
       int y3=scan.nextInt();
       int x4=scan.nextInt();
       int y4=scan.nextInt();
       long s1=(long)(x2-x1)*(y2-y1);
       long s2=(long)(x4-x3)*(y4-y3);
       long l=Math.min(x2, x4)-Math.max(x1, x3);
       long w=Math.min(y2, y4)-Math.max(y1, y3);
       long over=0;
       if(l>=0&&w>=0) {
    	   over=l*w;
       }
       System.out.println((s1+s2-over));
       
   }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值