T_T终于让我过了,坑啊,竟然时限是200ms。。。

我是预处理出不整除了个数的,因为这个较容易一点。利用算术基本定理,f=p1^a1*p2^a2......

所以,整除它的个数就是(a1+1)*(a2+1)......

开始预处理时,利用线性筛来先求素数,再计算,。。。呃,果断TLE了。后来发度娘告诉我一种令人发指的方法,那就是直接两个循环来求,比较令当前因数为i,循环求能被i整除的。。靠O(n^2)的啊,竟然比我的还要快。

另个求整除的,就直接DFS了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL __int64
using namespace std;
const LL INF=(1ll<<62)+1;
//bool isprime[50005];
//int mprime[50005],cp=0;
int prime[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,53,59};
//int cnt[50005],fac[100];
int findx[50005];
/*
void Init(){
memset(isprime,false,sizeof(isprime));
for(int i=2;i<=50000;i++){
if(!isprime[i]) mprime[cp++]=i;
for(int j=0;j<cp;j++){
if(mprime[j]>50000/i) break;
isprime[i*mprime[j]]=true;
if(i%mprime[j]==0) break;
}
}
}
/*
void WorkBefore(){
int facnt=0;
memset(cnt,0,sizeof(cnt));
memset(findx,0,sizeof(findx));
for(int i=2;i<=50000;i++){
facnt=0;
int ti=i;
for(int k=0;ti/mprime[k]>=mprime[k];k++){
if(ti%mprime[k]==0){
fac[facnt]=0;
while(ti%mprime[k]==0){
ti/=mprime[k];
fac[facnt]++;
}
facnt++;
}
}
if(ti!=1)
fac[facnt]=1,facnt++;
int e=1;
for(int k=0;k<facnt;k++){
e*=(fac[k]+1);
}
cnt[i]=i-e;
if(findx[cnt[i]]==0) findx[cnt[i]]=i;
}
}
*/ void dfs(int pos,int k,LL tans,LL &ans){
if(k==1&&tans<ans) ans=tans;
if(k<=1||tans>=ans) return;
LL t=1;
for(int i=1;i<=62;i++){
t*=prime[pos];
if(k<i+1) break;
if(k%(i+1)==0&&ans/t>=tans){
dfs(pos+1,k/(i+1),tans*t,ans);
}
}
} void Init(){
for(int i=1;i<=50000;i++) findx[i]=i;
for(int i=1;i<=50000;i++){
for(int j=i;j<=50000;j+=i) findx[j]--;
if(!findx[findx[i]]) findx[findx[i]]=i;
findx[i]=0;
}
} int main(){
Init();
// WorkBefore();
// cout<<"YES"<<endl;
int T,t=0,type,k;
scanf("%d",&T);
while(T--){
scanf("%d%d",&type,&k);
printf("Case %d: ",++t);
if(type==1){
int ans=-1;
if(findx[k]==0)
printf("Illegal\n");
else printf("%d\n",findx[k]);
}
else{
LL ans=INF;
dfs(0,k,1ll,ans);
if(ans==INF)
printf("INF\n");
else
printf("%I64d\n",ans);
}
}
return 0;
}

  

HDU 4542的更多相关文章

  1. hdu 4542 数论 + 约数个数相关 腾讯编程马拉松复赛

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4542 小明系列故事--未知剩余系 Time Limit: 500/200 MS (Java/Others) ...

  2. hdu 4542 打表+含k个约数最小数

    http://acm.hdu.edu.cn/showproblem.php?pid=4542 给出一个数K和两个操作 如果操作是0,就求出一个最小的正整数X,满足X的约数个数为K. 如果操作是1,就求 ...

  3. hdu 4542 小明系列故事——未知剩余系

    小明系列故事——未知剩余系 题意:操作0表示某数有n个约数,操作1为某数有n个非约数:n <= 47777,若是存在小于2^62的数符合,则输出该数,否则若是不存在输出Illegal,若是大于2 ...

  4. hdu 4542 "小明系列故事——未知剩余系" (反素数+DFS剪枝)

    传送门 参考资料: [1]:https://blog.csdn.net/acdreamers/article/details/25049767 题意: 输入两个数 type , k: ①type = ...

  5. hdu 4542 小明系列故事——未知剩余系 反素数 + 打表

    小明系列故事——未知剩余系 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Prob ...

  6. HDU 4542 小明系列故事——未知剩余系 (数论|反素数)

    分析 kuangbin的blog已经讲的很好了,我做一点补充 1.当做x*y>z的比较时,如果x \(\ast\) y过大,可以写成x>z/y 2.分解质因数时选择用f[][0]保存质数, ...

  7. hdu4542 && ZOJ2562(反素数)

    反素数: 对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整 数,都有,那么称为反素数. 有两个特点: 1.一个反素数的质因子必是从2开始的质数 2.如果,那么必有 最常见的问题如 ...

  8. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

随机推荐

  1. flask中内置的session

    Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from ...

  2. ndk书写位置的问题

    defaultConfig { applicationId "com.chenql.helloandroidjni" minSdkVersion 22 targetSdkVersi ...

  3. C# ADO.NET动态数据的增删改查(第五天)

    一.插入登录框中用户输入的动态数据 /// <summary> /// 添加数据 /// </summary> /// <param name="sender& ...

  4. ASP.NET 缓存(Cache)

    ASP.NET提供了在一个ASP.NET应用程序基本上缓存信息的编程功能.该功能和Application对象相似,但它具有在ASP.NET应用程序的生命周期内动态维护缓存信息的能力.在应用程序中缓存数 ...

  5. 6、scala Map和Tuple

    1.  创建Map 2.访问Map元素 3.修改Map元素的值 4.遍历Map 5.SortedMap和LinkedHashMap 6.Map的元素类型Tuple 1.  创建Map 创建不可变的Ma ...

  6. 您厉害您赚得多:聪明投资者的聊天记录,雪球CEO的21条投资理念

    3星|<您厉害您赚得多>:雪球创始人的投资理念.原则.技巧,及其在雪球上跟一些用户的互动的内容 作者是雪球创始人.CEO,全书基本是作者的一些投资理念+作者在雪球上跟用户的互动的内容,还有 ...

  7. Objective-C在ARC下结合GCD的单例模式和宏模版

    单例模式在iOS开发过程中经常用到,苹果提供过objective c单例的比较官方的写法: static MyGizmoClass *sharedGizmoManager = nil; + (MyGi ...

  8. 考试T1总结(又CE?!)

    考试T1CE... 最近不适合考试 T1 扶苏是个喜欢一边听古风歌一边写数学题的人,所以这道题其实是五三原题.歌曲中的主人公看着墙边的海棠花,想起当年他其实和自己沿着墙边种了一排海棠,但是如今都已枯萎 ...

  9. Python学习【第3篇】:Python之运算符

    一.运算符 计算机可以进行的运算有很多种,不只是加减乘除,它和我们人脑一样,也可以做很多运算. 种类:算术运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算,今天我们先了解前四个. 算术运 ...

  10. JavaScript 复杂判断的优雅写法

    JavaScript 复杂判断的优雅写法 <div> <input type="button" name="btn" value=" ...