uva1635】的更多相关文章

UVA-1635 题意: 给定n个数a1,a2,a3.....an,依次求出相邻的两个数的和,最后成为一个数,问这个数模m的值与那些最初的数无关 例:a1,a2,a3, m=2 => a1+a2,a2+a3 => a1+2a2+a3 ,显然第二项无关. 代码: //可以看出最后得到的式子符合杨辉三角,所以可以递推出所有的项的系数(c(i+1)=c(i)*(n-i)/(i+1)), //但是数太大不能直接计算,可以将他们分解成 a1^p1*a2^p2*... 的形式,这样就只需要判断因子的指数的…
题目链接:https://vjudge.net/problem/UVA-1635 (紫书320) 题解: 1.根据二项式定理, 可得递推公式: C(n,k) = (n-k+1)/k * C(n, k-1) 2.某一项与余数(%m)无关, 即表明该项的的系数是m的倍数, 由于 1<=n<=1e5, 直接运算的话肯定溢出. 所以 :将数字进行分解质因数, 记录质因子以及其个数.由于题目只需判断某项的系数是否为m的倍数, 所以只需要考虑m所拥有的质因子. 3.fac[i]记录m的质因数, num_m…
题意 给你 \(n\) 个数,每次求出相邻两个数的和组成新数列.经过 \(n-1\) 次操作后,得到一个数.求这个数 \(mod \ m\) 与哪些项无关. 如:当 \(m=2 \ , \ n=2\) 时 \(a_1 \ , \ a_2 , a_3 \Rightarrow a_1+a_2 \ , \ a_2+a_3 \Rightarrow \ a_1+2a_2+a_3\) 则与 \(a_2\) 无关 思路 由二项式定理知道结果系数是杨辉三角的第 \(n-1\) 行,问题转换成判断有多少个 \(C…
/* 哑元 组合数的递推整除判断_________________________________________________________________________________ #include <iostream> #include <map> #include <cmath> #include <vector> #include <cstdio> #include <string> #include <cs…
这种题目最重要的是思路了清晰 #include <cstdio> #include <cstring> ;//sqrt(n)+1 is enough ][]; ]; int a[maxn]; void factor(int m) { ][]; num = ; ; i*i <= m; i++) { ) { fac[++num][] = i; fac[num][] = ; do { fac[num][]++; m/= i; } ); } } ) { fac[++num][] =…
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51196 紫书P320; 题意:给定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.m,求得最终求和数列an=C(n-1,0)*x1 + C(n-1,1)*x2+...+C(n-1,n-1)*xn; 若xi与m无关,则an除以m的余数与xi无关,即余数不含xi的项: 输入:n,m 输出:ans  //无关项的总数: xi1 xi2 ...  //无关项,升序 Tips: 对于组合数的唯一分解定理 由于10^5级别的组合数必然会存在很大的项(long long甚至double都无法保存),要求得其唯一分解式只能采取按递推式分步分解,代码如下: bool check(int…
通过观察发现其规律符合杨辉三角 需要注意的是最后ai的系数是C(i-1,n-1) 那么,问题就可以变成判断C(0,n-1),C(1,n-1)....C(n-1,n-1)哪些是m的倍数 只需要计算出m的唯一分解式中各个素因子在C(i-1,n-1)中的指数即可完成判断 然而为了节省时间,实际上我们只需算出m的每一个素因子在C(i-1,n-1)项中  含有几个即可 即我们将c(i-1,n-1)依次除以m的每一个素因子,直到无法整出,即可得出该项素因子的个数 紫薯上给出一个公式C(k,n)=(n-k+1…
题意:给定n个数a1,a2····an,依次求出相邻两个数值和,将得到一个新数列,重复上述操作,最后结果将变为一个数,问这个数除以m的余数与那些数无关? 思路:最后观察期规律符合杨辉三角,那么,问题就可以变成判断C(0,n-1),C(1,n-1)....C(n-1,n-1)哪些是m的倍数,所以只需考虑m唯一分解后在C(i,n-1)中的情况 公式:C(k,n)=(n-i+1)*c(i-1,n)/k. 然后利用递推公式检查m的因子,只要(n-i+1)/i是m倍数即可 #include <iostre…
vjudge链接 原题链接 乍一看似乎没什么思路,但是写几个简单的例子之后规律就变得很明显. 比如当 n=5 时,每一步计算后的结果如下: a1 a1+a2 a1+2a2+a3 a1+3a2+3a3+a4 a1+4a2+6a3+4a4+a5 显然系数"1, 4, 6, 4, 1"就是杨辉三角第五行. 故某一项的系数是否是题中 m 的倍数,就决定了最终得到的数除以 n 的余数和那一项是否有关. 二项式定理: 从中很容易得到前后两项的关系 C(n, k)=(n-k+1)/k*C(n, k-…