UVa1635 - Irrelevant Elements(组合数)
来源:互联网 发布:java Renameto什么意思 编辑:程序博客网 时间:2024/05/02 03:09
题意:整个式子的和可以 化简为 sigma (C(n-1,i-1)*ai)
思路:只要判断C(n-1,i-1)能否被 m整除即可。
做法是先分解m的质因数,然后计算1!~(n-1)! 包含m的质因数的个数
C(n-1,i-1) = (n-1)!/((i-1)!*(n-i)!)
只要判断 剩下的质因数的个数是否大于等于m的任一个质因数的个数即可
<pre name="code" class="cpp">#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<string>#include<algorithm>#include<queue>#include<cmath>using namespace std;typedef long long LL;const int maxp = 40000 + 10;const int maxn = 100000 + 10;int n,m;bool isPrime[maxp];vector<int> ret,prime,hp,cnt,tmp;vector<int> g[maxn];void getPrime(){ memset(isPrime,true,sizeof isPrime); for(int i=2;i<maxp;i++){ if(isPrime[i]){ prime.push_back(i); for(int j=i+i;j<maxp;j+=i){ isPrime[j]=false; } } }}void getDigit(){ int tk=m; for(int i=0;i<prime.size()&&prime[i]*prime[i]<=tk;i++){ if(tk%prime[i]==0){ int k=0; hp.push_back(prime[i]); while(tk%prime[i]==0){ tk/=prime[i]; k++; } cnt.push_back(k); } } if(tk>1){ hp.push_back(tk); cnt.push_back(1); }}void init(){ cnt.clear(); hp.clear(); ret.clear(); getDigit(); for(int i=0;i<=n-1;i++) g[i].clear(); for(int i=0;i<=n-1;i++){ for(int j=0;j<hp.size();j++){ int d=0,t=i; while(t){ d+=t/hp[j]; t/=hp[j]; } g[i].push_back(d); } }}void solve(){ bool miden = false; for(int i=2;i<=(n-1)/2+1;i++){ bool flag=true; for(int j=0;j<hp.size();j++){ int d=g[n-1][j]-g[i-1][j]-g[n-i][j]; if(d<cnt[j]){ flag=false; break; } } if(flag){ ret.push_back(i); if(i==(n-1)/2+1&&(n&1))miden=true; } } tmp.clear(); tmp=ret; if(n&1){ int i; if(miden) i=tmp.size()-2; else i=tmp.size()-1; for(;i>=0;i--){ ret.push_back(n+1-tmp[i]); } }else{ for(int i=tmp.size()-1;i>=0;i--){ ret.push_back(n+1-tmp[i]); } } printf("%d\n",ret.size()); if(ret.size()){ printf("%d",ret[0]); for(int i=1;i<ret.size();i++) printf(" %d",ret[i]); } puts("");}int main(){ getPrime(); while(~scanf("%d%d",&n,&m)){ init(); solve(); } return 0;}
0 2
- UVa1635 - Irrelevant Elements(组合数)
- 组合数杨辉三角(Irrelevant Elements uva1635)
- UVa1635 - Irrelevant Elements(质因数分解)
- UVa1635 Irrelevant Elements
- #UVA1635#Irrelevant Elements
- 【数论】Irrelevant Elements, ACM/ICPC NEERC 2004, UVa1635 【组合数学】
- uva1635(组合数)
- uva1635 Irrelevant Elements(唯一分解定理)
- UVA 1635 Irrelevant Elements(杨辉三角+递推式求组合数+算数基本定理)
- uva-1635-Irrelevant Elements-唯一分解定理,组合数
- uva 1635 Irrelevant Elements [组合数, 唯一分解定理]
- uva 1635 Irrelevant Elements [组合数, 唯一分解定理]
- UVA1635 Irrelevant Elements —— 唯一分解定理 + 二项式定理
- UVa 1635 - Irrelevant Elements(唯一分解)
- UVa 1635 - Irrelevant Elements
- UVA 1635Irrelevant Elements
- uva 1635 - Irrelevant Elements
- uva 1635 Irrelevant Elements
- Centos 7添加用户
- linux调度器_第三代cfs(1)_引入
- JAVAIO—字节流
- Matlab协方差矩阵的计算原理
- Spark 1.3与hadoop2.6在64位最小安装的CentOS 7中的部署
- UVa1635 - Irrelevant Elements(组合数)
- HDU ACM 4550 卡片游戏
- 协方差矩阵的详细说明
- 按照数组值从大到小的顺序将其下标输出
- 数据结构与算法感想一
- hdu 2010 水仙花数
- UITableView长按手势UILongPressGestureRecognizer
- CF453B
- Dijkstra最短路径算法