蓝桥杯--整数分解--java--python-创新互联

整数分解
  • 题目介绍
  • 习题解决
    • 隔板模拟法
    • 暴力法
    • 动态规划

成都创新互联公司专注于企业营销型网站、网站重做改版、南票网站定制设计、自适应品牌网站建设、H5网站设计成都做商城网站、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为南票等各大城市提供网站开发制作服务。题目介绍
将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 分解成五个正整数的和,有多少种分解方法?
习题解决 隔板模拟法

我们可以使用隔板来进行解决。
如5就可以看成5个1用2个隔板来拆分成3份

11111
11111

答案就可以用数学简单的排列组合来计算就是C24

这个题目就可以课成2020个坑需要4个隔板拆分,答案就是计算C42020

import java.math.BigInteger;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {public static void main(String[] args) {//在此输入您的代码...
        BigInteger b1 = new BigInteger("2017");
        BigInteger b2 = new BigInteger("2020");
        BigInteger b3 = new BigInteger("2019");
        BigInteger b4 = new BigInteger("2018");
        int i = 3*4*2;
        System.out.println(b1.multiply(b2).multiply(b3).multiply(b4).divide(new BigInteger(String.valueOf(i))));
    }
}

python

print(2020*2019*2018*2017//4//3//2//1)
暴力法

因为最少为1则第一位范围在1-2017
后面位数同理
而对于最后2位数
我们可以看到倒数第二位确定了则倒数第一位确定。
所以可以得到如果a+b=c则有c-1种情况

long ans = 0;
for (int i = 1; i<= 2017; i++) {int n = 2021-i;
    for (int j = 1; j<= n-3; j++) {  int m = n-j;
      for (int d = 1; d<= m-2; d++) { ans += m - d -1;
      }
   }
}
assert (ans == 691677274345L);

python速度极慢不建议计算

ans = 0
for i in range(2017):
    n = 2021 - i - 1
    for j in range(n-3):
        m = n - j - 1
        for d in range(m-2):
            ans += m - d - 1
print(ans)
动态规划

dp[选的数字] [总数]
dp[i][j]当前(j数分成i分)
然后从i-1到i选一个数到总数到 j 那么,这个数可以是比j小的所有数
那么dp[i][j] = dp[i-1][j - z]不选这个数的所有和

long[][] dp = new long[7][2022];
Arrays.fill(dp[1],1);
for (int i = 2; i< 6; i++)
   for (int j = 1; j< 2022; j++)
      for (int z = 1; z< j; z++)
          dp[i][j] += dp[i-1][j-z];
System.out.println(dp[5][2021]);

python还是不写了,差不多一样的

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

文章名称:蓝桥杯--整数分解--java--python-创新互联
网站路径:https://www.cdcxhl.com/article12/ccscgc.html

成都网站建设公司_创新互联,为您提供网站导航品牌网站设计企业建站品牌网站建设网站维护动态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计