2013 寒假练习 1048 n以内约数最多的数
来源:互联网 发布:淘宝打折怎么设置长期 编辑:程序博客网 时间:2024/05/06 21:49
地址:http://acm.bit.edu.cn/mod/programming/view.php?a=534
题意:如题目。。
逐一求约数肯定超时。
正解是枚举可能的质因子的组合。如2^2*3,2*3*5等等。由于题目要求在约束相同时输出最小的,那么对于相同的指数组合,取较小的质因子肯定更优,故枚举时只需枚举指数组合非增的,像2^1 * 3^2 * 5^3这种就不用枚举,因为肯定没有2^3 * 3^2 * 5^1好(约数个数一样,后者更小)
http://blog.csdn.net/zhangwei1120112119/article/details/8566877
之所以只需枚举15个质数因为它们各取一个相乘已经远超10的9次方了。。
其实根本不用这么多的被骗了魂淡
#include<iostream>using namespace std;int t,n,res1,res2; //res1约数最多的数,res2其约数个数int prime[15]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};void dfs(int now,int ans,__int64 last,int num)//now当前第几个质数,ans当前值,last上一个质数的取值,num当前约数个数{int i;if(now==15) return;if(num>res2||(num==res2&&ans<res1)) res2=num,res1=ans;for(i=1,ans*=prime[now];ans<=n&&i<=last;ans*=prime[now],i++) dfs(now+1,ans,i,num*(i+1));}int main(){scanf("%d",&t);while(t--){res1=1,res2=1;scanf("%d",&n);dfs(0,1,100,1);printf("%d %d\n",res1,res2);}return 0;}
- 2013 寒假练习 1048 n以内约数最多的数
- n以内约数最多的数
- BIT1048n以内约数最多的数
- ZOJ 2562 More Divisors (n以内约数个数最多的最小数)
- n~m正整数约数个数最多的数
- 20亿以内哪个数的约数个数最多,个数是多少?
- 最多的约数(divisor)
- Jzoj3020 最多的约数
- 找有最多个约数的数(数论)
- wannfly练习赛8 给个n,求1到n的所有数的约数个数的和
- 牛客练习赛8,给个n,求1到n的所有数的约数个数的和~
- 求n以内的数的和
- 求n以内的所有完数
- 求N以内的所有亲和数
- 求n以内的所有因子数
- 求N以内的所有完数
- 【ZOJ 1562和 BZOJ 1053】【反素数】【求n以内的因子最多的那个数(即不超过n的最大反素数)】
- 输入n,求n位以内的水仙花数
- IT工作的那层纸
- java反编译SunJad.exe
- jQuery基础教程-第2章练习
- Python--模块(Python简明教程)
- 如何成为强大的程序员?
- 2013 寒假练习 1048 n以内约数最多的数
- Loading a Graph From an External Process(通过 Graph 查看directshow程序结构)
- perl中socket通讯时信息传递 换行符
- Java Scanner
- Config Arachni Scanner in Backtrack 5 R3 - YouTube
- Spring中使用annotation注入
- 叠加定理
- hdu 1013 Digital Roots
- spring开发_spring中Bean的作用域_singleton_prototype