2023年【第十四届蓝桥杯】省赛java b组填空题

news2025/2/25 2:21:10

 第一题  

令 S = 1! + 2! + 3! + ... + 202320232023!,求 S 的末尾 9 位数字。 提示:答案首位不为 0。

 考试时的想法以及题解:

如果我们直接按照题目描述直接来求每个阶乘和的话恐怕没有什么数据类型能够胜任,在考试时我一开始使用了BigInteger 来存放数据(这个是可以来容纳的),但是程序跑起来非常慢,就是因为202320232023这个数实在是太大了,程序运行了5分钟也就到了8位数,要想运行结束估计都毕业了。所以普通方法是行不通的,如果把202320232023这个数缩小一下,比如缩小到30,你就会发现一个规律:

cef334ac25734f779656c09839491f10.png

 可以看出当数越大时他的阶乘后面的0的个数也越多,如果你做过P1100 - 阶乘末尾0的个数(二) - New Online Judge (ecustacm.cn)

你会发现当一个数的末尾有9个0时其实这个数还不超过50(50的阶乘后面有10个0),所以我们只需要把前50个数的阶乘加起来就可以了,然后再对这个数取最后9位。

代码如下:

import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        BigInteger bigInteger=new BigInteger("1");
        BigInteger sum=new BigInteger("1");
        BigInteger sum2=new BigInteger("0");
        while(bigInteger.compareTo(new BigInteger("50"))==-1){
            sum=sum.multiply(bigInteger);
            sum2=sum2.add(sum);
            bigInteger=bigInteger.add(new BigInteger("1"));
        }
        System.out.println(sum2.mod(new BigInteger("1000000000")));
    }
}

 结果是:420940313

 幸运数

小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。
例如 2314 是一个幸运数字,因为它有 4 个数位,并且 2 + 3 = 1 + 4 。
现在请你帮他计算从 1 至 100000000 之间共有多少个不同的幸运数字。
本题的结果为一个整数,在提交答案时只输出这个整数,输出多余的内容将无法得分。

这个题用到了进制转换,其实java做进制转换的题还是挺方便的,用Integer.toString(num,radix)。

public class Main {
    public static void main(String[] args) {
        int num=126;
        String n1=Integer.toString(num,2);
        String n2=Integer.toString(num,8);
        String n3=Integer.toString(num,10);
        String n4=Integer.toString(num,16);
        System.out.println(num+"的二进制是:"+n1);
        System.out.println(num+"的八进制是:"+n2);
        System.out.println(num+"的十进制是:"+n3);
        System.out.println(num+"的十六进制是:"+n4);
    }
}

00271119592e4b9abcd0c1e179410f5d.png

 

了解进制转换后就可以直接暴力枚举了,其实也个数也不会很大1000000之内就可以求出来,时间不超过5秒钟。

代码如下:

public class Main {
    public static void main(String[] args) {
        int count=0;
        for(int i=1;i<1000000;i++){
            if(ISxys(i)){
                count++;
                System.out.println("第"+count+"个幸运数是"+i);
            }
            if(count==2023)break;
        }
    }
    static boolean ISxys(int num){
        String n1=Integer.toString(num,2);
        String n2=Integer.toString(num,8);
        String n3=Integer.toString(num,10);
        String n4=Integer.toString(num,16);
        char c1[]=n1.toCharArray();
        char c2[]=n2.toCharArray();
        char c3[]=n3.toCharArray();
        char c4[]=n4.toCharArray();
        int num1=0;
        int num2=0;
        int num3=0;
        int num4=0;
        for (int i=0;i<c1.length;i++){
            String s=""+c1[i];
            num1=num1+Integer.parseInt(s);
        }
        for (int i=0;i<c2.length;i++){
            String s=""+c2[i];
            num2=num2+Integer.parseInt(s);
        }
        for (int i=0;i<c3.length;i++){
            String s=""+c3[i];
            num3=num3+Integer.parseInt(s);
        }
        for (int i=0;i<c4.length;i++){
            String s=""+c4[i];
            if(s.equals("a"))num4+=10;
            else if(s.equals("b"))num4+=11;
            else if(s.equals("c"))num4+=12;
            else if(s.equals("d"))num4+=13;
            else if(s.equals("e"))num4+=14;
            else if(s.equals("f"))num4+=15;
            else num4=num4+Integer.parseInt(s);
        }
        return num%num1==0&&num%num2==0&&num%num3==0&&num%num4==0;
    }
}

结果是:215040

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux中的read/write和recv/send的区别,并使用recv/send实现简单的聊天功能

Linux中的read/write和recv/send的区别read/writeread/writeread/write的用法recv/sendrecv/sendrecv/send的用法LinuxLinuxLinux中的read/writeread/writeread/write和recv/sendrecv/sendrecv/send的区别下面是一个使用read/write进行文件读写操作的例子&#xff1a;下面是一个…

【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务

一、说明二、部署 MySQL三、部署 Nacos四、部署 Dubbo 服务4.1. 创建镜像仓库的密钥4.2. 部署 provider 服务4.3. 部署 consumer 服务五、测试一、说明 本文介绍基于 Kubernetes(k8s) 环境集成阿里云 私有镜像仓库 来部署一套 Dubbo Nacos 的微服务系统&#xff0c;并使用 Ku…

VUE前端项目环境搭建

背景&#xff1a; 想要使用vue搭建一个前端项目&#xff0c;写个小网站练练手&#xff0c;因为没有前端经验&#xff0c;所以从网上找了一个vue得开源模板使用&#xff0c;经过一番挑选选中了字节公司花裤衩大佬开源得项目&#xff0c;地址如下&#xff1a; 开源项目地址&…

第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)

使用教程一、配置1、环境配置2、框架配置3、启动入口二、用例编写1、用例模板2、参数依赖写法2、函数&#xff08;方法插件&#xff09;写法3、接口上传文件和表单参数4、接口上传json参数5、接口无数据填写6、code断言7、body断言7、json断言8、sql断言9、完整断言写法&#x…

三种不同实现ublk的零拷贝I/O的方法

用户态块设备ublk&#xff0c;就是提供/dev/ublkbX这样的标准块设备给业务&#xff0c;业务读写这个块的实际IO处理由编写的用户态的代码决定。这就好比使用FUSE&#xff0c;所有对挂载于FUSE的目录的读写都是编写的IO handler来处理一样。使用用户态块设备&#xff0c;可以方便…

产品经理必读|用户研究方法总结①

众所周知&#xff0c;理解用户需求&#xff0c;识别用户痛点&#xff0c;是产品或功能成型之前绕不开的过程。而要获取到用户真实的需求和痛点&#xff0c;唯一的方法就是做用户调研。而用研的方法都有哪些呢&#xff1f;今天我就来给大家分享一下行业中常见的用研方法。 用研的…

ESP32设备驱动-VL53L0X飞行时间(激光测距)传感器驱动

VL53L0X飞行时间(激光测距)传感器驱动 文章目录 VL53L0X飞行时间(激光测距)传感器驱动1、VL53L0X介绍2、硬件准备3、软件准备4、驱动实现1、VL53L0X介绍 VL53L0X 是新一代飞行时间 (ToF) 激光测距模块,采用当今市场上最小的封装,与传统技术不同,无论目标反射率如何,都能提…

项目中开发固定表头和首列的表格【付代码】

前言 前段时间做移动端的项目&#xff0c;项目中需要一个固定表头和首列的表格&#xff0c;但由于是移动端的&#xff0c;组件库里没有类似的&#xff0c;于是&#xff0c;就去网上找看有没有类似的&#xff0c;结果越找越气&#xff0c;10个文章9个抄&#xff0c;抄也行&#…

安全狗入选网络安全行业全景图(第十版)多个细分领域

4月7日&#xff0c;安全牛正式发布第十版网络安全行业全景图。 作为国内云原生安全领导厂商&#xff0c;安全狗也凭借综合的安全能力脱颖而出入选全景图多个领域。 据悉&#xff0c;全景图报告调研基于企业自主申报&#xff0c;并对申报企业收录有严格要求&#xff0c;安全牛…

Zookeeper集群+Kafka集群

目录 一、Zookeeper Zookeeper 概述 定义 工作机制 Zookeeper特点 Zookeeper数据结构 ZooKeeper应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 第一次启动选举机制 非第一次启动选举机制 二、部署Zookeeper集群 1、实验准备 2…

第60章 用户增、修、删的前端实现

1 \src\components\Users\AddUser.vue <template> <!-- elmentUI 子页面的渲染显示注意事项说明&#xff1a; 子页面的渲染显示必须的使用“<el-dialog></el-dialog>标签及其所包含的子标签&#xff0c;否则子页面将不会被渲染显示出来。” --> <…

Python学习笔记--判断语句

&#xff08;一&#xff09; 布尔类型和比较运算符 1. 布尔类型&#xff1a;判断结果 True&#xff1a;表示真&#xff08;是、肯定&#xff09; False&#xff1a;表示假&#xff08;否、否定&#xff09; """ 演示布尔类型的定义 以及比较运算符的应用 "…

BCM系统组成及控制原理

1 输入控制 由于负载能力、抗干扰能力等客观情况。许多信号量无法直接施加至MCU之上&#xff0c;须有适当的输入电路(Input circuit)将信号进行隔离、调理&#xff0c;方可安全可靠地传递给MCU。 下面以开关信号和脉冲信号2种来分述。 1)开关信号的输入。 即将系统与电源正…

高频算法:Leetcode53 最大子数组和

今天讲的是Leetcode第53题&#xff0c;最大子数组和 首先观察题目&#xff0c;题目需要我们找出具有最大和的连续子数组&#xff0c;直接拿题目中的示例来做一个演示&#xff0c;找一找什么规律下的连续子数组才能得到最大的和 先从-2开始&#xff0c;-2 1 -1 此时我们的和…

【Python】Python读写.xlsx文件(基本操作、空值补全等)

【Python】Python读写.xlsx文件&#xff08;Pandas&#xff09; 文章目录【Python】Python读写.xlsx文件&#xff08;Pandas&#xff09;1. 介绍2. Pandas读写xlsx文件2.1 基本操作2.1.1 实现任务2.1.2 代码2.1.3 结果2.2 进阶操作2.2.1 写操作2.2.2 查看数据表的基本信息2.2.2…

集中一个主题,密集学习几个月,突飞猛进

集中一个主题&#xff0c;密集学习几个月大长进 诺贝尔奖获得者西蒙发现 密集学习了几个月品牌营销的知识 长进明显 原来是有科学规律的 趣讲大白话&#xff1a;大力出奇迹 【趣讲信息科技132期】 **************************** 西蒙学习法&#xff1a;“对于一个有一定基础的人…

KANO模型-产品需求调研利器

最近要做一个项目&#xff0c;需要调研客户的真实需求&#xff0c;我们有一些可提供的功能&#xff0c;需要通过问卷调研出客户对功能的优先级需求。但问卷调研的结果能反映客户的真实需求和痛点吗&#xff1f;如何给这些需求排优先级&#xff0c;以及所占的权重&#xff1f;如…

【python】只需一段代码,剪辑一个视频——Moviepy详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、准备二、视频剪辑三、视频拼接四、逐帧变化四、导出GIF总结前言 知道吗&#xff0c;用moviepy一行代码就能够快速剪辑视频中某个区间的片段&#xff1a; cl…

mac m1系统安装安卓手机模拟器

背景&#xff1a;本人是一名开发人员&#xff0c;本地小程序上的需要地图导航到手机上&#xff0c;所以找到一个mac&#xff08;m1&#xff09;安装安卓模拟器的方案&#xff0c;这里记录分享一下。 废话不多说直接上步骤&#xff0c;很详细跟着步骤走就能完成&#xff01;&am…

【MySQL】delete和truncate的用法和区别

一、delete和truncate的用法 有如下数据表t_student 关键字delete和truncate都用来清除表中数据&#xff0c;语法结构为&#xff1a; delete from t_student;truncate table t_student; 两条SQL操作后的结果一样&#xff1a;删除了表中数据&#xff0c;但是会保留表的结构&a…