Uva1635 二项式递推+质因子分解+整数因子分解
题意:
给定n个数a1,a2····an,依次求出相邻两个数值和,将得到一个新数列,重复上述操作,最后结果将变为一个数,问这个数除以m的余数与那些数无关?
例如n=3,m=2时,第一次得到a1+a2,a2+a3,再求和得到a1+2*a2+a3,它除以2的余数和a2无关。1=<n<=10^5, 2=<m<=10^9
解法:
将所有的加法过程列出来可以得到,n个数合并成1个数需要n-1步,且最后的表达式写成初始项相加的形式 每一项的系数恰好就是一个二项式系数。
问除以m的余数与那些数无关,其实就是问这些因子中哪些是m的倍数。我们还是用分解m质因子的方法,将m的质因子全部先分解出来,然后遍历每个二项式系数,看他们能否整除这些质因子(如果这个二项式系数改写成质因子的幂次形式,的这个幂小于m中的这个幂,就不行) 。
除此之外还要学习的就是怎么计算这个幂次,尤其是被除数为分数的时候,分子的幂次的贡献为正,分母为负
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
int vis[ + ]; int work_quality_factor(int n, int quality_fac[], int frequency[])
{//n是待分解的数,quality_fac[]会存放它包含的质因子,而frequency[]存放对应次数
//如q_f[k]=7,fre[k]=2就表示质因数分解后里面包含有7,且次数是2
//函数返回有几种质因子,比如分解了25就返回1,分解28返回2
int res, temp, i;
res = ;
temp = n;
for (i = ; i*i <= temp; i++)
if (temp%i == )
{
quality_fac[res] = i;
frequency[res] = ;
while (temp%i == )
{
temp = temp / i;
frequency[res]++;
}
res++;
}
if (temp > )
{
quality_fac[res] = temp;
frequency[res++] = ;
}
return res;
} int main() {
int n, m;
while (scanf("%d%d", &n, &m) != EOF) {
n--;
memset(vis, , sizeof(vis));
int fac[], frq[];
int primenum = work_quality_factor(m, fac, frq); for (int i = ; i < primenum; i++) {
int min_e = frq[i], x, e = ;
// c(n,k)=c(n,k-1)*(n-k+1)/k
for (int k = ; k < n; k++) {
//分成上下两部分除,上面的幂次的贡献为正,下面为负
x = n - k + ;
while (x%fac[i]==) { x /= fac[i]; e++; }
x = k;
while (x%fac[i]==) { x /= fac[i]; e--; }
if (e < min_e)vis[k] = ;
}
} vector<int>ans;
for (int i = ; i < n; i++)
if (!vis[i])ans.push_back(i + );
printf("%d\n", ans.size());
if (!ans.empty()) {
printf("%d", ans[]);
for (int i = ; i < ans.size(); i++)
printf(" %d", ans[i]);
}
printf("\n");
}
return ;
}
Uva1635 二项式递推+质因子分解+整数因子分解的更多相关文章
- HDU-4651 Partition 整数拆分,递推
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:求n的整数拆为Σ i 的个数. 一般的递归做法,或者生成函数做法肯定会超时的... 然后要 ...
- 大概是:整数划分||DP||母函数||递推
整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...
- POJ 2506 Tiling(递推+大整数加法)
http://poj.org/problem?id=2506 题意: 思路:递推.a[i]=a[i-1]+2*a[i-2]. 计算的时候是大整数加法.错了好久,忘记考虑1了...晕倒. #includ ...
- HDU acm1028 整数划分 递归问题(递推)
我们用递归+记忆化的方法来解决普通整数划分问题:定义 f(n,m)为将整数n划分为一系列整数之和,其中加数 最大不超过m. 得到下面的递推关系式: 当n==1 || m==1 只有一种划分,即 1 或 ...
- 【BZOJ-2476】战场的数目 矩阵乘法 + 递推
2476: 战场的数目 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 58 Solved: 38[Submit][Status][Discuss] D ...
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
- 简单递推 HDU-2108
要成为一个ACMer,就是要不断学习,不断刷题...最近写了一些递推,发现递推规律还是挺明显的,最简单的斐波那契函数(爬楼梯问题),这个大家应该都会,看一点稍微进阶了一点的,不是简单的v[i] = v ...
- openjudge1768 最大子矩阵[二维前缀和or递推|DP]
总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...
- 【BZOJ-4547】小奇的集合 矩阵乘法 + 递推
4547: Hdu5171 小奇的集合 Time Limit: 2 Sec Memory Limit: 256 MBSubmit: 175 Solved: 85[Submit][Status][D ...
随机推荐
- python 异常之进阶操作
1.文件分析 下面来做一些文件分析操作,分析整本书的信息. 知识点: string.split():将字符串分解为列表. open(filename,‘rb’)或者open(filename,enco ...
- ant编译solr源码生成eclipse项目,解决一直resolve,一直[ivy:retrieve]的问题
这两天在学习solr,结果刚到编译solr源码就卡住了,足足卡了两天,网上找各种解决办法都是简单带过,说是缺少jar包,下载下来放到对应位置就好了....对应位置???咋不说这个问题用相应方法解决即可 ...
- An enhance script to check partition tables under all schemas in sqlserver
Simple step for EMC NW & NMM (1) disable WINDOWS UAC (reboot)(2) SET windows domain user AS sysa ...
- Expect & Shell: 网络设备配置备份
1. 环境介绍及效果展示 A. centos 6.6 x64 B. tftp-server 0.49 C. 脚本目录 D. 备份目录 E. 备份邮件 2. tftp服务配置 A. [root@step ...
- [Effective Java 读书笔记] 第三章类和接口 第二十三-- ??条
第二十三条 请不要再新代码中使用原生态类型 1 使用原生态类型,就失去了泛型在安全性和表述性方面的所有优势,所以新代码中不要使用原生态类型 2 List<String>可以传递给List作 ...
- javascript 对象api
// Object 构造函数的属性: Object.prototype//可以为所有 Object 类型的对象添加属性 class A extends B{ constructor(){ super( ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--网页版本代码生成器
1.单列表模式 2.树形列表模式 3.左右列表模式 4.左右树形和列表结合模式 一 简介 网页版代码生成器需要运行项目,非常有趣,可以用来研究,和自定义一些自己的代码习惯 按界面生成:可生成单个页面和 ...
- 北京智和信通IT运维管理系统二次开发服务提供商
随着云计算.大数据.物联网.移动互联网.人工智能.5G等高新技术的快速发展,数据中心及网络基础设施呈现出井喷式的增长模式,对设备商来说,多.快.好.省的实现定制化网络管理开发,可极大的扩充设备适用范围 ...
- Python学习小记(4)---class
1.名称修改机制 大概是会对形如 __parm 的成员修改为 _classname__spam 9.6. Private Variables “Private” instance variables ...
- java开发学生信息管理系统 源码
开发环境: Windows操作系统开发工具: Eclipse+Jdk+Tomcat+MYSQL数据库 运行效果图 源码及原文链接:https://javadao.xyz/forum.php?mo ...