题目:http://acm.hdu.edu.cn/showproblem.php?pid=4651

参考:https://blog.csdn.net/u013007900/article/details/42365823

   https://blog.csdn.net/visit_world/article/details/52734860

好像这样复杂度就是 \( O(n\sqrt{n} \) 的了。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
const int N=1e5+,mod=1e9+;
int upt(int x){if(x>=mod)x-=mod;if(x<)x+=mod;return x;}
int n,a[N];
void init()
{
int n=1e5; a[]=;
for(int i=;i<=n;i++)
for(int j=;;j++)
{
int k0=j*(*j-)>>, k1=j*(*j+)>>;
int fx=(j&)?:-;
if(k0>i&&k1>i)break;
if(k0<=i)a[i]=upt(a[i]+fx*a[i-k0]);
if(k1<=i)a[i]=upt(a[i]+fx*a[i-k1]);
}
}
int main()
{
int T=rdn(); init();
while(T--)
n=rdn(),printf("%d\n",a[n]);
return ;
}

关于 hdu 4658 :https://blog.csdn.net/u013368721/article/details/45827909

大概就是原来是 \( P(x)*\phi(x) = 1 \) ,现在是 \( P_k(x) = \frac{\phi(x^k)}{\phi(x)} = \phi(x^k)*P(x) \)

每次想求 \( P_k(x) \) 的第 n 项系数,所以先把 \( P(x) \) 预处理出来,然后每次暴力算 \( P_k(x) \) 的第 n 项,就是 \( O(n\sqrt{n}) \) 了。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
const int N=1e5+,mod=1e9+;
int upt(int x){if(x>=mod)x-=mod;if(x<)x+=mod;return x;}
int p[N];
void init()
{
int n=1e5; p[]=;
for(int i=;i<=n;i++)
for(int j=;;j++)
{
int k0=j*(*j-)>>, k1=j*(*j+)>>;
int fx=(j&)?:-;
if(k0>i&&k1>i)break;
if(k0<=i)p[i]=upt(p[i]+fx*p[i-k0]);
if(k1<=i)p[i]=upt(p[i]+fx*p[i-k1]);
}
}
int solve()
{
int n=rdn(),k=rdn(),ans=p[n];
for(int i=;;i++)
{
int k0=k*i*(*i-)>>, k1=k*i*(*i+)>>;
int fx=(i&)?-:;
if(k0>n&&k1>n)break;
if(k0<=n)ans=upt(ans+fx*p[n-k0]);
if(k1<=n)ans=upt(ans+fx*p[n-k1]);
}
printf("%d\n",ans);
}
int main()
{
init(); int T=rdn();
while(T--)solve();
return ;
}

hdu 4651 Partition && hdu 4658 Integer Partition——拆分数与五边形定理的更多相关文章

  1. HDU 4658 Integer Partition (2013多校6 1004题)

    Integer Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. HDU 4658 Integer Partition(整数拆分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4658 题意:给出n.k.求n的拆分方案数.要求拆分中每个数不超过k. i64 f[N]; void i ...

  3. hdu 4658 Integer Partition

    五角数定理!!可以参考这个http://www.cnblogs.com/xin-hua/p/3242428.html  代码如下: #include<iostream> #include& ...

  4. bzoj 4772 显而易见的数论——拆分数(五边形数定理)+线性筛

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4772 题解:https://blog.csdn.net/Dream_Lolita/artic ...

  5. 【hdu 4658】Integer Partition (无序分拆数、五边形数定理)

    hdu 4658 Integer Partition 题意 n分拆成若干个正整数的和,每个正整数出现小于k次,分拆方案有多少.(t<=100,n<=1e5) 题解 之前写过一篇Partit ...

  6. hdu - 4651 - Partition

    题意:把一个整数N(1 <= N <= 100000)拆分不超过N的正整数相加,有多少种拆法. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid ...

  7. hdu 4651 Partition (利用五边形定理求解切割数)

    下面内容摘自维基百科: 五边形数定理[编辑] 五边形数定理是一个由欧拉发现的数学定理,描写叙述欧拉函数展开式的特性[1] [2].欧拉函数的展开式例如以下: 亦即 欧拉函数展开后,有些次方项被消去,仅 ...

  8. Integer Partition(hdu4658)2013 Multi-University Training Contest 6 整数拆分二

    Integer Partition Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...

  9. HDU 4651 (生成函数)

    HDU 4651 Partition Problem : n的整数划分方案数.(n <= 100008) Solution : 参考资料: 五角数 欧拉函数 五边形数定理 整数划分 一份详细的题 ...

随机推荐

  1. Laravel中不可逆的加密方法

    1 //对 A 密码使用Bcrypt 加密 2 $password = Hash::make('secret'); 3 4 //你也可直接使用 bcrypt 的 function 5 $passwor ...

  2. string logo online customization

    url: http://www.asciiarts.net/ example :  hello

  3. POJ 2195 Going Home 最小费用流 难度:1

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17955   Accepted: 9145 Descr ...

  4. web端ip定位

    1/新浪定位 <script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js">&l ...

  5. 一些java的部署执行编译等命令

    编译: javac 参数 -d 指定编译后文件的位置 java 执行java文件 java生成jar文件 java执行jar文件 java生成war文件 war包是一种将web程序捆绑到单个文件上的一 ...

  6. 深入理解Linux网络技术内幕——网络设备初始化

    概述    内核的初始化过程过程中,与网络相关的工作如下所示:     内核引导时执行start_kernel,start_kernel结束之前会调用rest_init,rest_init初始化内核线 ...

  7. L243 词汇题2009

    The applications of genetic engineering are abundant (plentiful) and choosing one appropriate for th ...

  8. php 无限极分类问题

  9. 冷知识:excel 2013有多少行列

    XFD1048576 列:24*26*26+6*26+4=16384 行:2^20=1048576

  10. iOS 去除警告 看我就够了

    你是不是看着开发过程中出现的一堆的警告会心情一阵烦躁,别烦躁了,看完此文章,消除警告的小尾巴. 一.SVN 操作导致的警告 1.svn删除文件后报错 ”xx“is missing from worki ...