UVa 294 Divisors
来源:互联网 发布:单片机控制直流电机 编辑:程序博客网 时间:2024/05/18 18:15
题意:求[L,R]中哪个数的约数最多。
L<=R<=10^9,R-L<=10000
【分析】
暴力枚举+唯一分解定理就过了…
对于每个数x,可以变为 x=a1^p1+a2^p2+…am^pm(a数组为线性筛筛出的质数)
那么x的约数个数为 (p1+1)* (p2+1)* … *(pm+1) 这个自己想一下。
【代码】
//UVa 294 Divisors#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define M(a) memset(a,0,sizeof a)#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;const int mxn=40000;int n,T;int pri[mxn+5],cnt[mxn+5];bool vis[mxn+5];inline int read(){ int x=0,f=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline void shai(){ int i,j; fo(i,2,mxn) { if(!vis[i]) pri[++pri[0]]=i; fo(j,1,pri[0]) { if(i*pri[j]>mxn) break; vis[i*pri[j]]=1; if(i%pri[j]==0) break; } }}inline int fenjie(int x){ int i,j,ans=1; int m=sqrt(x); for(i=1;i<=pri[0] && i<=x;i++) { int sum=0; while(x%pri[i]==0) { x/=pri[i]; sum++; } ans*=(sum+1); if(x==1) break; } if(x>1) ans*=2; return ans;}int main(){ int i,j,l,r,t,k; shai(); T=read(); fo(t,1,T) { l=read(),r=read(); int mx=0,tmp; fo(i,l,r) if((tmp=fenjie(i))>mx) { mx=tmp; k=i; } printf("Between %d and %d, %d has a maximum of %d divisors.\n",l,r,k,mx); } return 0; }
1 0
- uva 294 divisors
- UVa 294-Divisors
- UVa 294 - Divisors
- UVa 294 - Divisors
- UVa 294 - Divisors
- UVa 294 - Divisors
- UVA 294(p344)----Divisors
- UVa 294 Divisors
- UVa 294 Divisors
- UVA 294 294 - Divisors (数论)
- uva 294 - Divisors(枚举+计数)
- UVa 294 - Divisors(数学)
- uva 294 ——Divisors
- Divisors UVA
- UVa 294 - Divisors(唯一分解)
- uva 294 Divisors 求因子个数
- UVA 294 Divisors(唯一分解定理 + 除数函数)
- 习题10-9 UVA 294 Divisors(约数)
- HDU 3232 Crossing Rivers
- New Year Permutation
- Oracle-XMLPublisher问题集锦 - 字体与乱码
- 洛谷 P1040 加分二叉树
- 获取当前访问的url
- UVa 294 Divisors
- 游戏编程模式:轻量级(Flyweight)模式(Part I)
- avro
- 嵌入式linux C编程基础知识点二:变量类型
- 如何使用vpn
- JSP以及js生成杨辉三角形
- Atitit 衡量项目的规模
- Eclipse下搭建python环境(解决project interpreter not specified)
- 多线程的那点儿事(之死锁)