Irrelevant Elements UVA - 1635 二项式定理+组合数公式+素数筛+唯一分解定理
/**
题目:Irrelevant Elements UVA - 1635
链接:https://vjudge.net/problem/UVA-1635
题意:給定n,m;題意抽象成(a+b)^(n-1)按照二次项分布后每个系数的值按照位置分别为c1,c2,c3...;
如果ci%m==0; 那么输出这个位置。 思路:已知n,计算系数的方法:c(n,m) = (n-m+1)/m*c(n,m-1) ;由于c(n,m-1)%m不一定等于0.所以要先乘。 由于n达到了1e5,所以如果算结果是不可行的。一边乘一边对m(题目的m)取模也是不行的。因为有除法存在,且不一定都有逆元。 所以采用唯一分解定理来处理。 对每一个系数判断在m这个数的所有素因子都可以>=;这样就可以包含它。注意特殊情况,m=1 或者n=1的时候处理方式。 求每一个系数的素因子个数也是可以用c(n,m) = (n-m+1)/m*c(n,m-1)这个公式来递推。 */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include <vector>
#include <cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf = 0x3f3f3f3f;
const int maxn = 1e5+;
const int e9 = 1e9;
const double eps = 1e-;
int prime[maxn], pz;
int e[];
int p[], z;
int c[];
int a[maxn];
void init()
{
int N = sqrt(e9+0.5);
for(int i = ; i<=N; i++){
if(prime[i]==){
for(int j = i*i; j <= N; j+=i){
prime[j] = ;
}
}
}
pz = ;
for(int i = ; i <= N; i++){
if(prime[i]==){
prime[pz++] = i;
}
}
//cout<<"pz = "<<pz<<endl;
}
void add_factor(int x,int add)
{
for(int i = ; i < z&&x!=; i++){
while(x%p[i]==){
e[i]+=add;
x/=p[i];
}
}
}
bool ok()
{
for(int i = ; i < z; i++){
if(e[i]>) return false;
}
return true;
}
int main()
{
int n, m;
init();
while(scanf("%d%d",&n,&m)==)
{ z = ;
memset(e, , sizeof e);
for(int i = ; i < pz&&prime[i]*prime[i]<=m; i++){
if(m%prime[i]==){
while(m%prime[i]==){
e[z]++;
m /= prime[i];
}
p[z++] = prime[i];
}
}
if(m>){
e[z] = ;
p[z++] = m;
} n = n-;
int cnt = ;
for(int i = ; i <= n; i++){
add_factor(n-i+,-);//n-m+1
add_factor(i,);// /m
if(ok()){
a[cnt++] = i;
}
}
printf("%d\n",cnt);
for(int i = ; i < cnt; i++){
printf("%d%s",a[i]+,i==cnt-?"\n":" ");
}
if(cnt==){///小坑,哪怕结果为0,也要有一个换行。
printf("\n");
}
}
return ;
}
Irrelevant Elements UVA - 1635 二项式定理+组合数公式+素数筛+唯一分解定理的更多相关文章
- Irrelevant Elements UVA-1635 (二项式定理)
vjudge链接 原题链接 乍一看似乎没什么思路,但是写几个简单的例子之后规律就变得很明显. 比如当 n=5 时,每一步计算后的结果如下: a1 a1+a2 a1+2a2+a3 a1+3a2+3a3+ ...
- hdu4497-GCD and LCM-(欧拉筛+唯一分解定理+组合数)
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- hdu2421-Deciphering Password-(欧拉筛+唯一分解定理+积性函数+立方求和公式)
Deciphering Password Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Divisors (求解组合数因子个数)【唯一分解定理】
Divisors 题目链接(点击) Your task in this problem is to determine the number of divisors of Cnk. Just for ...
- 紫书 习题 10-7 UVa 10539(long long + 素数筛)
注意要开long long 如果int * int会炸 那么久改成long long * int #include<cstdio> #include<vector> #incl ...
- LightOj 1236 Pairs Forming LCM (素数筛选&&唯一分解定理)
题目大意: 有一个数n,满足lcm(i,j)==n并且i<=j时,(i,j)有多少种情况? 解题思路: n可以表示为:n=p1^x1*p2^x1.....pk^xk. 假设lcm(a,b) == ...
- UVa 10791 最小公倍数的最小和(唯一分解定理)
https://vjudge.net/problem/UVA-10791 题意: 输入整数n,求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小. 思路: 首先对n进行质因数分解,举个例子 ...
- UVa 1635 - Irrelevant Elements-[分解质因数]
Young cryptoanalyst Georgie is investigating different schemes of generating random integer numbers ...
- POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]
Irrelevant Elements Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2407 Accepted: 59 ...
随机推荐
- 用fastjson反序列化 带泛型的类
ServiceResult<User> serviceResult = JSON.parseObject(obtainResult, new TypeReference<Servic ...
- 【译】PHP中的Session及其一些安全措施
有一点我们必须承认,大多数web应用程序都离不开session的使用.这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制.我们先简单的了解一些http的知识,从而理解该协议的无 ...
- JS面向对象之闭包
闭包 闭包的概念 闭包的含义就是闭合,简单来说就是一个具有封闭功能的结构 闭包就是具有封闭的对外不公开的,包裹结构或空间 在 js 中的闭包 在 js 中函数可以构成闭包 函数是一个代码结构的封闭结构 ...
- ios(iphone/ipad)一个简单的用代码判断当前设备的方法
直接NSLog(@"current_device:%@",[UIDevice currentDevice].model); 即可看出它输出的是当前设备,所以根据这个字符串可简单的判 ...
- EF4.4 升级EF6.0问题总结
如出现下面代码错误,基本可能确定EF数据库配置错误 在 System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeReso ...
- JSON.parse(str),JSON.stringify(a)
1.JSON.parse(str),字符串转换成对象 var str = '{"name":"huangxiaojian","age":&q ...
- C#中的访问修饰符
1. 简述 private. protected. public. internal 修饰符的访问权限.private : 私有成员, 在类的内部才可以访问.protected : 保护成员,该类内部 ...
- idea 配置Spring MVC
一.idea 生成的Spring MVC 项目将<url-pattern>.form<url-pattern>改成<url-pattern>.do<url-p ...
- 字符串编码原理--PHP数组原理与高级应用
基础知识 1.有几种表达方式(查看手册)2.单引号和双引号的区别,双引号解析变量.\n,\t等,八进制与十六进制编码 内部存储方式 c语言中怎么表示字符串,结构体存储了字符指针和长度1.字符串可以用[ ...
- Windows正在使用无法停止通用卷怎么办
最后解决方案1: 1.双击任务栏上的安全删除硬件图标 2.按下Ctrl + Alt + Del 组合键调出"任务管理器": 3.结束其中的explorer.exe进程,此时桌面上的 ...