hiho一下 第八十九周 Divisors
2016-03-18 20:02
281 查看
描述
Given an integer n, for all integers not larger than n, find the integer with the most divisors. If there is more than one integer with the same number of divisors, print the minimum one.输入
One line with an integer n.For 30% of the data, n ≤ 103
For 100% of the data, n ≤ 1016
输出
One line with an integer that is the answer.题目分析
#include<stdio.h> #include<math.h> int prime[13] = {2,3,5,7,11,13,17,19,23,29,31,37,41}; long long N, max = 1, ans = 1; void DFS(long long now, long long divisor, int prime_index, long long pre){ if(max < divisor || (max == divisor && now < ans)){ max = divisor; ans = now; } if(prime_index > 12) return; long long i = 1, newnow; while(i <= pre && now*pow(prime[prime_index], i) <= N){ newnow = now*pow(prime[prime_index], i); DFS(newnow, divisor*(i+1), prime_index+1, i); i++; } } int main(){ scanf("%lld", &N); DFS(1, 1, 0, log2(N)); printf("%lld\n", ans); return 0; }
相关文章推荐
- mongodb用户管理总结
- ListView的setSelectionFromTop()方法与setSelection()方法的联系
- 选择排序—简单选择排序(Simple Selection Sort)
- BZOJ 1060: [ZJOI2007]时态同步 树形DP
- lintcode: 最长连续序列
- 欧拉回路模板
- java内部类
- IOS 网络浅析-(七 JSON解析之三方JSONKit)
- 在DOS下的DEBUG命令的详细用法
- 复习下链表
- Linux--进程间通信(管道及有名管道FIFO)(转)
- HDOJ 2001 计算两点间的距离(利用对象方法)
- 【bzoj 3190】 赛车 题解&代码(C++)
- 经典题:用树状数组求逆序数+离散化(3743)
- 浅谈JSON数据解析方法
- Java进阶学习规划
- php中rsa加密解密验证
- 一致性哈希应用
- Python安装cx_Oracle
- 编译