UVa 294 (因数的个数) Divisors】的更多相关文章

题意: 求区间[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…
UVA 294 - Divisors 题目链接 题意:求一个区间内,因子最多的数字. 思路:因为区间保证最多1W个数字,因子能够遍历区间.然后利用事先筛出的素数求出质因子,之后因子个数为全部(质因子的个数+1)的积 代码: #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 35005; int prime[N], pn = 0, v…
在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,…
已知条件: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的项,就会构成新的一个因数) 也许你会有疑问,…
Mathematicians love all sorts of odd properties of numbers. For instance, they consider to be an interesting number, since it is the first odd number for which the sum of its divisors is larger than the number itself. To help them search for interest…
Mathematicians love all sorts of odd properties of numbers. For instance, they consider 945 to be an interesting number, since it is the first odd number for which the sum of its divisors is larger than the number itself. To help them search for inte…
1.题目大意: 输入两个整数L.H其中($1≤L≤H≤10^9,H−L≤10000$),统计[L,H]区间上正约数最多的那个数P(如有多个,取最小值)以及P的正约数的个数D. 2.原理: 对于任意的一个正整数N,若有$N=p_1^{e1}p^{e2}_2...p^{er}_r$ 且$p_1.p_2...p_r$都为素数,则有N的因数个数为$(e1+1)(e2+1)...(er+1)$. 3.范围确定 关于对maxn的确定,由$1≤L≤H≤10^9$可知:对 $10^9$ 开根号,大概估算一下,将…
一个数的正约数个数等于这个数的质因数分解后 每一项幂+1的积 因为每个质因数的幂可以为0, 1, 2--(注意可以为0) 所以就每个质因数配一个幂任意组合就可得一个正因数,根据乘法原理可得正约数个数. 另外质因数分解可以不用素数筛(但可能会稍微慢一点) #include<cstdio> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; int f(int n) { int ret = 1; f…
题意:输入两个整数L,U(1<=L<=U<=109,U-L<=10000),统计区间[L,U]的整数中哪一个的正约数最多.如果有多个,输出最小值. 分析: 1.求一个数的约数,相当于分解质因子. 2.例如60 = 2 * 2 * 3 * 5.对于2来说,可选0个2,1个2,2个2,有3种情况,同理对于3,有2种情况,对于5,有2种情况,所以3 * 2 * 2则为60的约数个数. 3.L到U扫一遍,取最大值即可. #pragma comment(linker, "/STAC…
题意:求区间内正约数最大的数. 原理:唯一分解定义(又称算术基本定理),定义如下: 任何一个大于1的自然数 ,都可以唯一分解成有限个质数的乘积  ,这里  均为质数,其诸指数  是正整数.这样的分解称为    的标准分解式.(取自百度百科) 根据原理,正约数数量 = (1+a1)(1+a2)..(1+an) 因此我们需要先求出所有素数,进而求出a1,a2,..an的大小. 原题给的数字范围是1<=L<=U<=10^9,假如要全部算一遍需要很长时间.那么可能最大的正约数是多少呢? 回想我们…
/** 题目:Magical GCD UVA 1642 链接:https://vjudge.net/problem/UVA-1642 题意:给定n个数,求使连续的一段序列的所有数的最大公约数*数的数量的值最大.输出这个最大值. 思路: 从左到右枚举一段连续序列时候,同时不断取gcd,会发现gcd相同的部分. gcd的值会随着长度边长非递增变化.最多logx个不同的gcd.那么对于一个长长的序列. 要是可以将相同gcd的一起处理,那么时间就可以优化. 枚举姿势要正确,保证当前枚举的位置,可以利用前…
题意:由1,2,3...n组成的序列中找三个数,且以这三个数为变长能组成三角形,求这样的三角形个数. 思路:当每次输入n时重新都计算一遍会TLE...先预处理,将结果存入ans数组. 代码: #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<queue> #include<algorithm> #include<cma…
#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…
搞了两天发现是qpow时大数相乘爆精度了,以前没遇到过,因为大数检测时模数达到了1e18,所以qpow可能会爆,应该利用快速幂原理写一个快速加即可. 先筛出1e6以内的质数,然后把x里<=1e6的质因子筛完,这时候x里至多有两个大于1e6因子,可以同时miller下把质数统计走,这样剩下的数都是P1*P2的形式,由于我们只需要知道不同种类因子的个数,可以对剩下的数先两两判断是否不相等且gcd>1,这样就可以把这两个数拆分为四个质因子统计.之后再遍历剩下的数,用之前统计的质因子尝试是否可以被整除…
Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers. Now given a humble number, please write…
参考链接http://blog.csdn.net/acm_cxlove/article/details/8264290http://blog.csdn.net/w00w12l/article/details/8212782 题意: 首先定义了一种叫做Reverse Prime的数:是一个7位数,倒置后是一个<=10^6的素数(如1000070) 然后要把所有的Reverse Prime求出来,排好序. 然后题目有2种操作: q x :求编号0到编号x的Reverse Prime的质因数个数的和…
   题目 解决代码及点评 /* 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>…
题目:输出n!中素数因数的个数. 分析:数论.这里使用欧拉筛法计算素数,在计算过程中求解就可以. 传统筛法是利用每一个素数,筛掉自己的整数倍: 欧拉筛法是利用当前计算出的全部素数,乘以当前数字筛数: 所以每一个前驱的素椅子个数一定比当前数的素因子个数少一个. 说明:重新用了"线性筛法". #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring&g…
设m=C(n,k)=n!/((n-k)!*k!) 问题:求m的因数的个数 将m分解质因数得到 p1有a1个 p2有a2个 .... 因为每一个质因数能够取0~ai个(所有取0就是1,所有取ai就是m)最后的答案就是(a1+1)*(a2+1)*....* 注意不能直接将m分解,由于太大,所以要先分解n,n-k,k,依据他们再来加减. #include <iostream> #include <cstdio> #include <cmath> #include<cst…
一个最基本的算数法则就是大于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 商 """…
题目描述 定义 \(d(n)\) 为 \(n\) 的正因数的个数,比如 \(d(2) = 2, d(6) = 4\). 令 $ S_1(n) = \sum_{i=1}^n d(i) $ 给定 \(n\),求 \(S_1(n)\). 输入格式 第一行包含一个正整数 \(T\) (\(T \leq 10^5\)),表示数据组数. 接下来的 \(T\) 行,每行包含一个正整数 \(n\) (\(n < 2^{63}\)). 输出格式 对于每个 \(n\),输出一行一个整数,表示 \(S_1(n)\)…
这道题其实不难,但是我想复杂了 我想的是把每个数质因数分解,然后每次就枚举每个质因数 来求最小公倍数. 然后想了想这样复杂度将会非常的大,肯定超时 然后看了题解发现不需要质因数分解,直接存因数的个数就好了 c[i]表示i这个因数出现的次数. 然后因为当k越小的时候答案越大(严格来说是大于等于),这是显而易见的,当数少了 之后对最大公因数的限制就越少. 所以我们可以把因数从大到小枚举,来求答案. #include<cstdio> #include<cmath> #include<…
1.每一个合数都可以由若干个素数相乘而得到 2.质因数知识 :求一个数因数的个数等于它的每个质因数的次数加一的和相乘的积因为质因数可以不用,所以要加一.例如6=2x3,两个质因数都是一次,如果两个质因数都不用,它的一个因数是1:只用因数2,它的第二个因数就是2:只用因数3,它的第三个因数就是3:两个质因数都用,它的第四个因数就是6. 所以6的因数的个数就是(1+1)(1+1)=4.再如12=2²x3,两个质因数,2是2次,3是一次,如果两个质因数都不用,它的一个因数是1:只用一个因数2,它的第二…
积性函数: 积性函数定义ok 积性函数指对于所有互质的整数\(a\)和\(b\)有性质\(f(ab)=f(a)f(b)\)的数论函数 除数函数? 莫比乌斯函数\(\mu\)ok \[ \phi(i) = \begin{cases} 1, & i==1 \\ (-1)^k, & i == \prod_{i=1}^{k}{p_i^1 {p}, p_i为所有质因子 \\ 0, & otherwise \end{cases} \] 为什么是积性函数? 对任意\(a,b,gcd(a,b)=1…
和泉纱雾与烟花大会 题目来源: UOJ 192 最强跳蚤 (只改了数据范围) 官方题解: 在这里哦~(说的很详细了 我都没啥好说的了) 题目大意: 求树上各边权乘积是完全平方数的路径数量. 这种从\(n^2\)条路径中找出满足xx条件的路径的条数的题, 我们可以根据常识判断要用到点分治. 不过这题并没有用到点分治, 这个一会再说, 我们先来看部分分. 哎呀其实这题好多部分分我都不会写(捂脸 算法1: 直接乘边权处理显然是不行哒, 怕是\(w\leq2\)怕是都要用到高精度了(什么你说\(w\le…
<!DOCTYPE html><html><head>    <title>js</title>    <meta charset="utf-8">    <script type="text/javascript">// 1至100 连加               sum=0;               for(var i =1; i<=100;i++){        …
"流程控制语句":if.for. 1.1 if 选择语句,给程序添加了多种执行路线. 1 if(){ 2  语句1 3 }else if(){ 4  语句2 5 }else if(){ 6  语句3 7 }else{ 8  语句4 9 } 有且仅有一条出路.注意跳楼现象. 所以我们发现,计算机的两个基本能力:1)计算能力 2)流程控制能力 1.2 for 循环语句,顾名思义,就是将结构类似的语句重复执行. 1 for(var i = 0 ; i <= 100 ; i++){ 2 …
这道题是有根树点分治+烧脑的容斥+神奇的分块 因为是规定1为根,还要求LCA,所以我们不能像在无根树上那样随便浪了,必须规定父亲,并作特殊讨论 因为gcd并不好求,所以我们用容斥转化一下,求x为gcd的因数的个数,这样就可以随便统计了,个人觉得代码比题解要好懂. 又因为统计完重心的所有子树,还有重心的父亲,所以在这个分治块内沿着重心的父亲一路向上爬,这时候重心的子树到重心的父亲的距离是变的,所以我们用神奇的分块大法,分类讨论,$≤\sqrt{n}$使用数组记录答案,方便以后再用到的时候统计,$>…
<p>1 打印出1-100里所有的偶数</p> <script> // for(var i=1;i<=100;i++){ // if(i%2==0){ // document.write(i+" "); // } // } </script> <p>2 打印出1-100里所有的奇数</p> <script> // for(var i=1;i<=100;i++){ // if(i%2==1){…