别人的解题报告:

http://blog.csdn.net/zstu_zlj/article/details/9796087

我的代码:

 1 #include <cstdio>
 2 #define N 100020
 3 const int mod = 1e9+7;
 4 int p[N];
 5 void Partition()
 6 {
 7     p[0] =1;
 8     for(int n=1; n <= 1e5; ++n)
 9     {
10         int fac = 1;
11         int  k =1;
12         while(true)
13         {
14             int t=n-k*(3*k-1)/2;
15             if(t < 0) break;
16             p[n] = (p[n]+fac*p[t])%mod;
17             if(t-k >= 0)
18                 p[n] = (p[n]+fac*p[t-k])%mod;
19             p[n] %= mod;
20             fac = -fac;
21             ++k;
22         }
23         p[n] = (p[n]+mod)%mod;
24     }
25 }
26 int main()
27 {
28 //    freopen("in.cpp","r",stdin);
29     Partition();
30     int d;
31     scanf("%d",&d);
32     while(d--)
33     {
34         int c;
35         scanf("%d",&c);
36         printf("%d\n",p[c]);
37     }
38     return 0;
39 }

View Code

认真考虑二维的情况;n<10^3才可行,而且该代码没有取模操作······

我的代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #define N 2005
 4 //#define debug
 5 int d[N][N];
 6 void init()
 7 {
 8     for(int i=0; i<N; ++i)
 9         d[0][i] = d[1][i]=d[i][0]=d[i][1] =1;
10     for(int i=2; i<N; ++i)
11     {
12         for(int j=2; j<N; ++j)
13         {
14             if(i-j >= 0) d[i][j] += d[i-j][j];
15             d[i][j] += d[i][j-1];
16         }
17     }
18 }
19 int main()
20 {
21 #ifdef debug
22     freopen("in.c","r",stdin);
23 #endif
24     init();
25     int t;
26     scanf("%d",&t);
27     while(t--)
28     {
29         int m;
30         scanf("%d",&m);
31         printf("%d\n",d[m][m]);
32     }
33
34     return 0;
35 }

View Code

要查看关于二维的解释可点击下面的链接:

http://www.cnblogs.com/allh123/p/3246828.html

转载于:https://www.cnblogs.com/allh123/p/3242969.html

HDU 4651 数论 partition 求自然数的拆分数相关推荐

  1. hdu 3641 数论 二分求符合条件的最小值数学杂题

    http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*================================= ...

  2. Database之SQL:SQL之over partition by开窗函数的简介、使用方法(求各班级内各自排名/求各班级内第一名/求各班级内分数递增和等案例解析)之详细攻略

    Database之SQL:SQL之over partition by开窗函数的简介.使用方法(求各班级内各自排名/求各班级内第一名/求各班级内分数递增和等案例解析)之详细攻略 目录 over part ...

  3. c语言怎么编程已知数的总和,C程序使用递归求自然数之和

    C程序使用递归求自然数之和 在此示例中,您将学习使用递归函数查找自然数之和. 要理解此示例,您应该了解以下C语言编程主题: 正数1.2.3 ...称为自然数.下面的程序从用户处获取一个正整数,然后计算 ...

  4. 【线段树】【模板】讲解 + 例题1 HDU - 1754 I Hate It (点修改分数)+ 例题二 POJ - 3468 A Simple Problem with Integers(区间加值)

    [线段树][模板]讲解 + 例题1 HDU - 1754 I Hate It (点修改分数)+ 例题二 POJ - 3468 A Simple Problem with Integers(区间加值) ...

  5. 数据库(求每个班最高分数的人的信息)

    一个数据库查询的问题  一个表T(id,class,score,name),求每个班最高分数的人的信息. CREATE TABLE `t_student` (`id` int(11) NOT NULL ...

  6. C语言实验(十三):函数(求两个任意分数和的最简形式、将正整数转换为字符串输出、某日期是该年第几天)

    C语言实验(十三):函数(求两个任意分数和的最简形式.将正整数转换为字符串输出) 一.任意输入两个分数,用C语言编程求这两个分数和的最简形式.如:输入为"2/6 + 12/9 =" ...

  7. Java编程语言学习:Java语言基础案例(如求两门课分数之差、三门课平均分、关系运算符作比较)之详细攻略

    Java编程语言学习:Java语言基础案例(如求两门课分数之差.三门课平均分.关系运算符作比较)之详细攻略 目录 Java语言基础案例 1.求两门课分数之差.三门课平均分: 2.关系运算符作比较

  8. 五边形数定理与拆分数

    只做梳理,不做证明 (因为不会证) 五边形数 图片摘自百度百科. 可以发现, g i = g i − 1 + 3 ( i − 1 ) + 1 g_i=g_{i-1}+3(i-1)+1 gi​=gi−1 ...

  9. HDU 4651 Partition(整数拆分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init() {     f ...

最新文章

  1. 红米手机使用应用沙盒一键修改imsi信息
  2. ×××常见问题原因与解决
  3. EchoServer
  4. linux建立动态库链接,Linux动态链接库.so文件的创建与使用
  5. 大数据之-Hadoop之HDFS_HDFS组成架构---大数据之hadoop工作笔记0050
  6. win10运行在哪里_90s安装新一代win10X!全新操作界面,完美兼容win7或win10程序
  7. 小车自动往返工作原理_自动化控制灌溉工作原理
  8. 什么是大数据,模式识别和人工智能算法实现
  9. 《你必须知道的.NET》读书实践:一个基于OO的万能加载器的实现
  10. Adobe Flash Player 是什么
  11. python中seek函数_Python seek()函数
  12. html 图片靠左浮动,float【css浮动】left靠左 right靠右属性图文教程
  13. HDS存储产品概述1
  14. python编程:实现自助点餐小程序,包括自定义菜单,点餐,账单,结算等功能
  15. python什么是形参?
  16. exec函数族的基本用法
  17. 案例分享 | 基于Linkis+DSS构建合合信息一站式数据开发平台
  18. 【推荐+转摘】如何又快又好的做出一份优质PPT
  19. Zigbee无线网络及其配电自动化的应用
  20. 骁龙820A:多媒体Display硬件接口介绍

热门文章

  1. 二十、MySQL之用户权限管理(用户管理、权限管理、忘记root密码的解决方案)
  2. LeetCode 5832. 构造元素不等于两相邻元素平均值的数组
  3. LeetCode 1210. 穿过迷宫的最少移动次数(状态压缩BFS)
  4. LeetCode 473. 火柴拼正方形(回溯)
  5. LeetCode 204. 计数质数(质数的倍数不是质数)
  6. LeetCode 413. 等差数列划分(DP)
  7. java第九章编写一个能够产生_第九章java教程.ppt
  8. 端口可以随便设置吗_驱动可以随便更新吗?
  9. python3之批量修改文件名称
  10. 微信小程序:页面跳转时传递数据到另一个页面