题目: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. ps -ef |grep xxx 输出的具体含义

    ps:将某个进程显示出来 -A 显示所有程序. -e 此参数的效果和指定"A"参数相同. -f 显示UID,PPIP,C与STIME栏位. grep命令是查找 中间的|是管道命令 ...

  2. James Whittaker:经营成功的测试职业生涯

    转注:这篇文章出自 James A. Whittaker,Google的工程总监,负责Google部分产品的测试,包括Chrome.地图.GoogleWebApp.在加盟Google之前,James在 ...

  3. cmake 手册详解

    cmake 手册中文版,后续再相关博客的其他链接中,感谢翻译的好人! https://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_0 ...

  4. Root谷歌OnHub路由器

    Exploitee.rs极客小组因破解谷歌电视而成名,并且他们还发布了许多硬件相关的工具和exp.这次他们root了OnHub路由器.并发布在了他们的博客里. Google OnHub是谷歌于今年八月 ...

  5. 使用Arduino模块实施无线信号的重放攻击

    无线电已经存在使用了很长一段时间,在这很长的一段时间里诞生了一个名叫火腿族的集体(小编:嗯 对 就是整天吃火腿的那些人^_^  CQ CQ ).无线电和互联网一样:同样存在一些安全隐患,比如:在无线信 ...

  6. Linux中MySQL中文乱码问题

    一. 问题描述 登录后查看mysql默认编码: mysql> show variables like 'character%'; +--------------------------+---- ...

  7. SWIFT中调用Segue的几个方法

    场景1: 如图所示,在视图的第一个按钮处拉出一条Segue到另外一个视图,并给这个Segue命名,如SegueOne 此时可以用代码调用这个Segue切换视图: self.performSegueWi ...

  8. iOS开发之旅:实现一个APP界面框架

    在上一篇博客中,给大家介绍了一下我们传统的 APP 界面框架-标签导航的一些优缺点,在这篇文章中我会来给大家演示,如何用代码去实现这一框架.本次的实现我会分成俩部分来讲,好了闲话少说,接下来进入到开发 ...

  9. Xcode C++ and Objective-C refactoring

    Is there a way to refactor mixed C++/Objective-C code in Xcode ?? I am writing a game using Cocos2D ...

  10. MySQL性能优化方法二:表结构优化

    原文链接:http://isky000.com/database/mysql-perfornamce-tuning-schema 很多人都将 数据库设计范式 作为数据库表结构设计“圣经”,认为只要按照 ...