poj2140(奇因数的个数)】的更多相关文章

#include<stdio.h>int main(){ int n,s=0; scanf("%d",&n); for(int i=1;i<=n;i++) if(n%i==0&&i%2==1) s++; printf("%d",s); return 0;}/*假设a,a+1,a+2...a+k ,为一组符合的答案有(k+1)a+0.5*k*(k+1)=n成立划成(a + 0.5*k)(k+1)=n观察等式发现必须满足1. 0…
在n!中末尾有几个0 取决于n!中5的个数(2肯定比5多) 所以遍历从1到n的数,看总共有几个5即可 ..N do j = i; == ) ++ret; j /= ; end end 有个nb的方法: z = [N/5] + [n/(5^2)] + [n/(5^3)] + ... N/5表示不大于N的数中5的倍数的数贡献一个5,N/(5^2)表示不大于N的数中5^2的倍数的数贡献一个5 while(N) ret += N/; N /= ; end 这种可以拓展为求n!中质因数的个数  不止是5,…
题意: 求区间[L, U]的正因数的个数. 分析: 有这样一条公式,将n分解为,则n的正因数的个数为 事先打好素数表,按照上面的公式统计出最大值即可. #include <cstdio> #include <cmath> ; ]; ], cnt = ; void Init() { int m = sqrt(maxn + 0.5); ; i <= m; ++i) if(!vis[i]) for(int j = i * i; j <= maxn; j += i) vis[j…
已知条件:n=p1^a1xp2^a2xp3^a3........xpk^ak;求解n的因数的个数: 求解的主要思想:递归 设所有的因数的个数为U1: 则U1会等于什么呢? 不妨设求得p2^a2xp3^a3.......xpk^ak=U2; 则我们可以这样考虑: U1包含3部分:1.只有p1的因素:共有a1种(无非是p1,p1*p1,...) 2.不包含p1: 共有U2种 3.包含p1,但不只是p1: 共有a1xU2种(对于U2中的每一种情况加乘有p1的项,就会构成新的一个因数) 也许你会有疑问,…
题目链接:http://lightoj.com/volume_showproblem.php?problem=1278 题意:给你一个数n(n<=10^14),然后问n能用几个连续的数表示; 例如: 15 = 7+8 = 4+5+6 = 1+2+3+4+5,所以15对应的答案是3,有三种; 我们现在相当于已知等差数列的和sum = n, 另首项为a1,共有m项,那么am = a1+m-1: sum = m*(a1+a1+m-1)/2  -----> a1 = sum/m - (m-1)/2 a…
搞了两天发现是qpow时大数相乘爆精度了,以前没遇到过,因为大数检测时模数达到了1e18,所以qpow可能会爆,应该利用快速幂原理写一个快速加即可. 先筛出1e6以内的质数,然后把x里<=1e6的质因子筛完,这时候x里至多有两个大于1e6因子,可以同时miller下把质数统计走,这样剩下的数都是P1*P2的形式,由于我们只需要知道不同种类因子的个数,可以对剩下的数先两两判断是否不相等且gcd>1,这样就可以把这两个数拆分为四个质因子统计.之后再遍历剩下的数,用之前统计的质因子尝试是否可以被整除…
求方程:的解个数 分析:设,那么上述方程解的个数就与同余方程组:的解等价. 设同于方程的解分别是:,那么原方程的解的个数就是 所以现在的关键问题是求方程:的解个数. 这个方程我们需要分3类讨论: 第一种情况: 对于这种情况,如果方程的某个解设为,那么一定有,可以得到,即 所以方程的解个数就是:,也就是 第二种情况: 这样也就是说p|B,设,,本方程有解的充要条件是A|t, 那么我们设t=kA, 所以进一步有:,因为,这样又转化为第三种情况了. 第三种情况: 那么我们要求指标:求指标的话又要求原根…
   题目 解决代码及点评 /* 43. 求n!的末尾有多少个零.可以通过检查n!含有多少个10的因数来求它末尾零的个数. 因为10=2×5,在n!中含有2的因数显然多于含有5的因数. 一种求n!中5的因数的个数的算法如下: 1) 输入正整数n; 2) 0=>k, n=>m; 3) 若m<5,转第5步,否则执行第4步; 4) m/5(取整)=>m, k+m=>k, 转第3步; 5) 输出k(n!末尾零的个数). */ #include <stdio.h>…
一个最基本的算数法则就是大于1的整数都能用1个或多个素数相乘的形式表示出来.当然,有多种质因子排列方案 如: 10=2×5=5×2    20=5×2×2=2×5×2=2×2×5 用f(k)表示k的质因数排列数,f(10)=2,f(20)=3 给一个n,至少有一个k满足f(k)=n的最小k 输出格式:n和k 输入: 1 2 3 105 输出: 1 2 2 6 3 12 105 720 数据范围 n,k<2^63 我们令k=∏piei   S=∑ei f(k)=S!/(∏ei!) 解释一下:S是所…
晚饭后朋友发来个问题,正好无事做,动手写了一下 若一个正整数有偶数个不同的真因子,则称该数为幸运数.如4含有2个真因子为 1 和 2 .故4是幸运数.求[2,100]之间的全部幸运数之和. 常规思路 被除数一直除以 1 2 3 ... 直到除以它自身,不过这种比较消耗资源(周知python简洁但效率不高) getf.py def get_Factor(x): """ n 需要求真因数的数(被除数) x x 除数 y rem 余数 quo 商 """…