HDU-计算机学院大学生程序设计竞赛(2015’11)1006 逆袭指数(枚举)
2015-11-29 18:44
225 查看
1001-搬砖(贪心):/article/9545198.html
1002-投币洗衣机(模拟):/article/9545199.html
1003-玩骰子(枚举) :/article/9545203.html
1004-质方数(打表):/article/9545200.html
1005-ACM组队安排(排列组合):/article/9545204.html
1007-油菜花王国(并查集):/article/9545201.html
1008-游乐场(贪心):/article/9545202.html
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Problem Description
这依然是关于高富帅小明曾经的故事——
尽管身处逆境,但小明一直没有放弃努力,除了搬砖,小明还研究过东方的八卦以及西方的星座,一直试图在命理上找到自己能够逆袭的依据。
当这些都失败以后,小明转向了数学研究,希望从中得到一些信息。一天,小明在研究《BestCoder逆袭的数理基础》这本书时,发现了宝贵的信息,其中写道:
每个人都存在一个逆袭指数,对于这个逆袭指数,可能存在连续的因子,如果这个连续因子足够长的话,那么这个人逆袭的概率就很大!
小明已知自己的逆袭指数,请告诉小明他最长的连续因子,以让他来判断他自己是否能够逆袭。
Input
输入包含多组测试数据。
每组数据占一行,包含一个整数N,表示小明的逆袭指数,N小于2^31。
Output
对于每组数据,请输出2行:
第一行输出最长的因子个数;
第二行输出最小的因子序列,具体请参考样例。
特别说明:由于小明十分讨厌单身,所以1不算因子。
Sample Input
Sample Output
n的范围比较大,第一映象就是没法枚举
最后再看时,如果枚举的话,随着ansLen和sta的增加,从sta开始的ansLen+1个数的积很快便会大于n,可以大幅降低枚举的个数
超时后发现,如果n是质数,则会超时,没想到如何有效判断,都已经想用Miller_Rabin先判断是否为素数,再计算
看到别人思路,才想起O(sqrt(n))判断一个数是否为素数的方法,而且能直接融合进枚举过程中
1002-投币洗衣机(模拟):/article/9545199.html
1003-玩骰子(枚举) :/article/9545203.html
1004-质方数(打表):/article/9545200.html
1005-ACM组队安排(排列组合):/article/9545204.html
1007-油菜花王国(并查集):/article/9545201.html
1008-游乐场(贪心):/article/9545202.html
逆袭指数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description
这依然是关于高富帅小明曾经的故事——
尽管身处逆境,但小明一直没有放弃努力,除了搬砖,小明还研究过东方的八卦以及西方的星座,一直试图在命理上找到自己能够逆袭的依据。
当这些都失败以后,小明转向了数学研究,希望从中得到一些信息。一天,小明在研究《BestCoder逆袭的数理基础》这本书时,发现了宝贵的信息,其中写道:
每个人都存在一个逆袭指数,对于这个逆袭指数,可能存在连续的因子,如果这个连续因子足够长的话,那么这个人逆袭的概率就很大!
小明已知自己的逆袭指数,请告诉小明他最长的连续因子,以让他来判断他自己是否能够逆袭。
Input
输入包含多组测试数据。
每组数据占一行,包含一个整数N,表示小明的逆袭指数,N小于2^31。
Output
对于每组数据,请输出2行:
第一行输出最长的因子个数;
第二行输出最小的因子序列,具体请参考样例。
特别说明:由于小明十分讨厌单身,所以1不算因子。
Sample Input
630 12
Sample Output
3 5*6*7 2 2*3 Hint 630 = 3*5*6*7
n的范围比较大,第一映象就是没法枚举
最后再看时,如果枚举的话,随着ansLen和sta的增加,从sta开始的ansLen+1个数的积很快便会大于n,可以大幅降低枚举的个数
超时后发现,如果n是质数,则会超时,没想到如何有效判断,都已经想用Miller_Rabin先判断是否为素数,再计算
看到别人思路,才想起O(sqrt(n))判断一个数是否为素数的方法,而且能直接融合进枚举过程中
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,t,mx,ansSta,ansFin,ansLen,sta,fin; int cal(int s,int len) {//计算从s开始的len个数的积 int num=1,i=0; for(;i<len;++i) num*=s+i; return num; } int main() { while(1==scanf("%d",&n)) { mx=n>>1; ansSta=ansFin=1; ansLen=0; for(sta=2;n>=cal(sta,ansLen+1);++sta) {//如果n大于等于从sta开始的ansLen+1个数的积,则继续 if(n<sta*sta&&ansLen==0) {//如果n是质数 ansLen=1; ansSta=n; ansFin=n+1; break; } t=n; for(fin=sta;t%fin==0;++fin)//n能被sta..fin-1整除 t/=fin; if(fin-sta>ansLen) {//如果连续的长度大于以前的,则更新 ansSta=sta; ansFin=fin; ansLen=fin-sta; } } printf("%d\n%d",ansLen,ansSta++); while(ansSta<ansFin) printf("*%d",ansSta++); printf("\n"); } return 0; }
相关文章推荐
- 深度学习计算机视觉资料
- 如何使用github?github简单使用教程(转自http://blog.sina.com.cn/dashanliu)
- HDU-计算机学院大学生程序设计竞赛(2015’11)1005 ACM组队安排(排列组合)
- ASO优化总结(基于网络分享的知识总结归纳)
- 浅谈UNIX下Apache的MPM及httpd.conf配置文件中相关参数配置
- c语言数据结构:01背包问题-------动态规划
- 计算机网络---基础题目汇总六
- Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
- HDU-计算机学院大学生程序设计竞赛(2015’11)1003 玩骰子(枚举)
- UNIX网络编程——Posix共享内存区和System V共享内存区
- Dell服务器网络不通故障排除
- HDU-计算机学院大学生程序设计竞赛(2015’11)1008 游乐场(贪心)
- 旭说数据结构之图的基本知识
- 图解TCP/IP读书笔记(三)
- HDU-计算机学院大学生程序设计竞赛(2015’11)1007 油菜花王国(并查集)
- 数据结构 使用递归任意进制转换(c语言实现)
- 数据结构 栈的应用任意进制转换(c语言实现)
- HDU-计算机学院大学生程序设计竞赛(2015’11)1004 质方数(打表)
- 数据结构 单链表插入删除操作(c语言实现)
- C++底层数据结构常用方法