HDU 4651 数论 partition 求自然数的拆分数
别人的解题报告:
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 求自然数的拆分数相关推荐
- hdu 3641 数论 二分求符合条件的最小值数学杂题
http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*================================= ...
- Database之SQL:SQL之over partition by开窗函数的简介、使用方法(求各班级内各自排名/求各班级内第一名/求各班级内分数递增和等案例解析)之详细攻略
Database之SQL:SQL之over partition by开窗函数的简介.使用方法(求各班级内各自排名/求各班级内第一名/求各班级内分数递增和等案例解析)之详细攻略 目录 over part ...
- c语言怎么编程已知数的总和,C程序使用递归求自然数之和
C程序使用递归求自然数之和 在此示例中,您将学习使用递归函数查找自然数之和. 要理解此示例,您应该了解以下C语言编程主题: 正数1.2.3 ...称为自然数.下面的程序从用户处获取一个正整数,然后计算 ...
- 【线段树】【模板】讲解 + 例题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(区间加值) ...
- 数据库(求每个班最高分数的人的信息)
一个数据库查询的问题 一个表T(id,class,score,name),求每个班最高分数的人的信息. CREATE TABLE `t_student` (`id` int(11) NOT NULL ...
- C语言实验(十三):函数(求两个任意分数和的最简形式、将正整数转换为字符串输出、某日期是该年第几天)
C语言实验(十三):函数(求两个任意分数和的最简形式.将正整数转换为字符串输出) 一.任意输入两个分数,用C语言编程求这两个分数和的最简形式.如:输入为"2/6 + 12/9 =" ...
- Java编程语言学习:Java语言基础案例(如求两门课分数之差、三门课平均分、关系运算符作比较)之详细攻略
Java编程语言学习:Java语言基础案例(如求两门课分数之差.三门课平均分.关系运算符作比较)之详细攻略 目录 Java语言基础案例 1.求两门课分数之差.三门课平均分: 2.关系运算符作比较
- 五边形数定理与拆分数
只做梳理,不做证明 (因为不会证) 五边形数 图片摘自百度百科. 可以发现, g i = g i − 1 + 3 ( i − 1 ) + 1 g_i=g_{i-1}+3(i-1)+1 gi=gi−1 ...
- HDU 4651 Partition(整数拆分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init() { f ...
最新文章
- 红米手机使用应用沙盒一键修改imsi信息
- ×××常见问题原因与解决
- EchoServer
- linux建立动态库链接,Linux动态链接库.so文件的创建与使用
- 大数据之-Hadoop之HDFS_HDFS组成架构---大数据之hadoop工作笔记0050
- win10运行在哪里_90s安装新一代win10X!全新操作界面,完美兼容win7或win10程序
- 小车自动往返工作原理_自动化控制灌溉工作原理
- 什么是大数据,模式识别和人工智能算法实现
- 《你必须知道的.NET》读书实践:一个基于OO的万能加载器的实现
- Adobe Flash Player 是什么
- python中seek函数_Python seek()函数
- html 图片靠左浮动,float【css浮动】left靠左 right靠右属性图文教程
- HDS存储产品概述1
- python编程:实现自助点餐小程序,包括自定义菜单,点餐,账单,结算等功能
- python什么是形参?
- exec函数族的基本用法
- 案例分享 | 基于Linkis+DSS构建合合信息一站式数据开发平台
- 【推荐+转摘】如何又快又好的做出一份优质PPT
- Zigbee无线网络及其配电自动化的应用
- 骁龙820A:多媒体Display硬件接口介绍
热门文章
- 二十、MySQL之用户权限管理(用户管理、权限管理、忘记root密码的解决方案)
- LeetCode 5832. 构造元素不等于两相邻元素平均值的数组
- LeetCode 1210. 穿过迷宫的最少移动次数(状态压缩BFS)
- LeetCode 473. 火柴拼正方形(回溯)
- LeetCode 204. 计数质数(质数的倍数不是质数)
- LeetCode 413. 等差数列划分(DP)
- java第九章编写一个能够产生_第九章java教程.ppt
- 端口可以随便设置吗_驱动可以随便更新吗?
- python3之批量修改文件名称
- 微信小程序:页面跳转时传递数据到另一个页面