蓝桥杯:整数分解

news2024/11/26 14:39:31

题目链接

问题描述

答案提交

本题答案:691677274345。

思路分析


问题描述

将 3 分解成两个正整数的和, 有两种分解方法, 分别是3=1+2 和 3=2+1 。注意顺序不同算不同的方法。

将 5 分解成三个正整数的和, 有 6 种分解方法, 它们是

 1+1+3 = 1+2+2 = 1+3+1 = 2+1+2 = 2+2+1 = 3+1+1。

请问, 将 2021 分解成五个正整数的和, 有多少种分解方法?

答案提交

        这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。

本题答案:691677274345。

思路分析

        填空题,所以我们只要得出答案就行,直接暴力模拟。

        我们可以将公式看成一个个格子,如: 口 + 口 + 口 + 口 + 口 = 2021。

        如果我们直接5个嵌套for,肯定超时,所以我们需要做一下分类,尽量不要嵌套那么多层。

        那么我们就将五个格子分成两份,一份是:口+口+口 < 2021,另一份根据第一份得出来的值在继续模拟。

        就变成了 (口+口+口)+口+口 = 2021。对于括号里面的三个口,我们可以开一个数组,用下标代表对应的值,比如(1+2+3) 就是array[6] ,然后让对应位置的值+1。

        就是使用hash法,用数组记录括号里的值和可以得到该值的方案数,也就是key-对应值,value-对应该值的方案数,我们用数组来记录。      

        简单来说,我们需要一个数组,下标代表括号里面的值,该下标处的值代表能够得到这个值的方案数,比如 array[4] ,他可以是1+1+2,也就是是1+2+1,也可以是2+1+1等等,我们就假设4这个下标(括号内的值),的方案数是3,我们之后匹配剩余的两个括号的时候,就变成了 (4)+ 口 +口 = 2021,然后4这个值有3种方案得到,然后当前的两个空格也算是一种方案,所以当前这条式子的方案数是3*1 = 3。

        所以当 (4) + 口 + 口 =2021的时候,我们直接把 array[4]的方案数添加到我们的记录变量中,因为值很大,需要用long long 或者 大数运算。

        至于剩余的两个口,就需要我们用双层for嵌套来跑相应的值了哦。

        代码如下,跑了3.8s,但是填空题嘛,出答案就算成功~

import java.math.*;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        //结果很大,只能用大数
        BigInteger res = new BigInteger("0");

        //开hash表记录三个整数和的方案数量
        int[] hash = new int[2021];

        //记录程序开始时间
        long startTime = System.currentTimeMillis();

        //先统计前面三个整数的和
        for(int i = 1;i<2021;i++) {
            for(int j = 1;j<2021;j++) {
                for(int k = 1;k<2021;k++){
                    if(i+j+k < 2021) hash[i+j+k]++;
                }
            }
        }

        //再统计后面两个整数的和
        for(int i = 1;i<2021;i++) {
            for(int j = 1;j<2021;j++) {
                if(i+j < 2021) res = res.add( new BigInteger(hash[2021-i-j]+"") );
            }
        }
        
        //记录程序结束时间
        long endTime = System.currentTimeMillis();
        
        //打印结果
        System.out.println(res.toString());
        //打印程序运行时间
        System.out.println("耗时:"+(endTime-startTime)+" ms");
    }
}

        运行结果:

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

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

相关文章

WebSocket长连接接入支付宝消息服务,实现消息通知

大家好&#xff0c;我是小悟 在对接支付宝开放平台的一些常用功能时&#xff0c;常常需要收到支付宝的回调通知结果&#xff0c;才能处理业务逻辑。此文介绍通过WebSocket长连接接入支付宝消息服务&#xff0c;实现消息通知。 包括五部分内容&#xff1a;问题、优势、配置、代…

Spring3.*中ASM和JDK8版本冲突问题及解决方案

1. 问题描述 Spring3.* 中ASM版本较低&#xff0c;不支持对 JDK8 class文件进行操作&#xff0c;启动时报错。 Tomcat报错 org.springframework.asm.MethodVisitor.visitParameter2. 问题原因 Spring使用ASM类库操作Java class文件&#xff0c;Spring.* 依赖的ASM类库版本比…

右键万能格式转换工具

格式转换是很多小伙伴都会用到的东西&#xff0c;无论是视频、音频还是文档等格式&#xff0c;其实做这方面的软件有很多&#xff0c;比如之前一直在用的格式工厂&#xff0c;蛮好用的。后面用到了ABC工具箱&#xff0c;&#xff08;这款软件批量处理图片会很方面&#xff09;界…

故障分析 | 库表名-大小写不规范,运维两行泪

作者&#xff1a;刘聪 爱可生华东交付服务部 DBA 成员&#xff0c;专职 MySQL 故障处理及相关技术支持。座右铭&#xff1a;好好学习&#xff0c;天天向上。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系…

【博客589】K8s Topology Spread Constraints

K8s Topology Spread Constraints 场景 你可以使用 拓扑分布约束&#xff08;Topology Spread Constraints&#xff09; 来控制 Pod 在集群内故障域之间的分布&#xff0c; 例如区域&#xff08;Region&#xff09;、可用区&#xff08;Zone&#xff09;、节点和其他用户自定义…

带你从概念到服务对象,解读商业智能BI

数据在当前时代已然成为了重要的战略资源&#xff0c;但数据资产却并不是每个企业都能利用。数据本身并没有太多意义&#xff0c;规模小还好&#xff0c;一旦规模量变大&#xff0c;人们就难以理解其中的含义。所以讲数据资产价值化&#xff0c;使其转化为信息和知识成为了企业…

五个了解自己天赋优势的分析工具(四)MBTI测试

MBTI测试 MBTI全称“迈尔斯-布⾥格斯类型指标”&#xff0c;是美国作家伊莎⻉尔布⾥格斯迈尔斯和她的⺟亲凯瑟琳库克布⾥格斯在20世纪40年代编制的⼀种⼈格测试。 这⼀测试的基础来⾃著名⼼理学家荣格提出的⼼理类型理论。 荣格将⼈的性格类型分为“内向&#xff08;I&#xf…

广告业务系统 之 业务串联 —— “ PDB - 广告投放【保量保价】”

文章目录广告业务系统 之 业务串联 —— “ PDB - 广告投放【保量保价】”PDB - 广告投放[保量保价]PDB 浅述PDB 数据流图保量逻辑设计订单曝光拆分凌晨停量补量广告业务系统 之 业务串联 —— “ PDB - 广告投放【保量保价】” PDB - 广告投放[保量保价] 常规的 ADX 系统&am…

【C语言练习】 二进制中1的个数

目录题目详情&#xff1a;思路一&#xff1a;思路二&#xff1a;思路三&#xff1a;题目详情&#xff1a; 思路一&#xff1a; 拿到二进制的每一位&#xff0c;看它是否等于 111&#xff0c;再定义一个计数器变量&#xff0c;如果等于 111&#xff0c;计数器变量就加 111。最终…

rancher的k3s证书过期

文章目录现象rancher报错日志分析解决思路解决现象 web上rancher不能访问&#xff0c;服务上看443端口没了&#xff0c;6443端口仍然在。 rancher报错日志 rancher | time"2023-01-05T01:56:07.241615176Z" levelinfo msg"Waiting for master node start…

代码随想录--数组相关题目整理

LeetCode数组相关题目整理 1. LeetCode704 二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 解题思路&#xf…

亚马逊云科技助力游戏上云学习心得-运行篇

云服务已经是大势所趋了&#xff0c;通过购置传统服务器来进行应用开发&#xff0c;无法与现代化敏捷的开发方法相结合&#xff0c;对于系统运维的难度也大大增加&#xff0c;而云服务的弹性伸缩、动态计费可以很好地帮助中小企业实现快速应用开发&#xff0c;使得产品的价值最…

一文吃透python面向对象基础+进阶

目录基本理论面向过程与面向对象面向过程面向对象基本概念面向对象基本语法定义类创建对象属性属性和变量区别对象属性类属性限制对象属性添加方法实例方法类方法静态方法私有属性只读属性私有方法魔法方法字符串表示可调用索引操作切片操作比较操作布尔判断遍历操作面向对象三…

字节青训营Go语言学习第一天--基础语言+实战案例

文章目录走进Go语言基础语言2.2基础语言-变量2.3基础语法- if else2.4基础语法-循环基础语法-switch基础语法-数组基础语法-切片基础语法-map基础语法-range基础语法-函数基础语法-指针基础语法-结构体基础语法-结构体方法基础语法-错误处理基础语法-字符串操作基础语法-字符串…

通讯录升级--可增容(动态增长空间)

通讯录成员的改变 之前我们定义了date[100]的数组用来存放100个人的信息&#xff0c;但是当需要存储的人数超过100时&#xff0c;内存不够&#xff0c;存储人数较少时&#xff0c;又有些浪费&#xff0c;并且数组空间在创建时就已经确立&#xff0c;无法随需求改变&#xff0c…

rabbitmq+netcore6 【6】RPC:远程过程调用

文章目录1&#xff09;前言2&#xff09;Client interface 客户接口3&#xff09;Callback queue回调队列4&#xff09;Correlation Id 关联Id5&#xff09;Summary总结6&#xff09;综合以上代码准备工作服务端客户端结果验证官网参考链接&#xff1a; https://www.rabbitmq.c…

372. 超级次方

372. 超级次方题目算法设计&#xff1a;迭代算法设计&#xff1a;递归题目 传送门&#xff1a;https://leetcode.cn/problems/super-pow/ 题目不难懂&#xff0c;问题在于 b 是一个非常非常大的数&#xff0c;会溢出。 迭代和递归&#xff0c;各有解决方法&#xff0c;记录在…

Elasticsearch入门——kibanna和postman操作Elasticsearch索引示例

目录一、使用kibanna操作Elasticsearch索引示例二、使用postman操作Elasticsearch索引示例三、kibanna和postman操作Elasticsearch的总结一、使用kibanna操作Elasticsearch索引示例 启动Elasticsearch和kibanna服务&#xff0c;浏览器访问http://localhost:5601/,进入Dev Tools…

week11

T1汤姆斯的天堂梦 题目描述 汤姆斯生活在一个等级为 000 的星球上。那里的环境极其恶劣&#xff0c;每天 121212 小时的工作和成堆的垃圾让人忍无可忍。他向往着等级为 NNN 的星球上天堂般的生活。 有一些航班将人从低等级的星球送上高一级的星球&#xff0c;有时需要向驾驶…

【C语言】数据结构基础(每日小细节025),有三数之和哦

算法好题初阶&#xff08;一共14回已经更新完毕&#xff09;&#xff0c;从今天开始就是基础的数据结构题目 1.只出现一次的数字 如果不额外开辟任何空间的话一定要想到位运算符 异或^ :两个整数异或&#xff0c;遵循相同为0&#xff0c;相异为1的二进制位运算规则 &#x…