分析

kuangbin的blog已经讲的很好了,我做一点补充

1.当做x*y>z的比较时,如果x \(\ast\) y过大,可以写成x>z/y

2.分解质因数时选择用f[][0]保存质数,方便查错

3.写程序时分段写,防止变量名写错查很久

一道不错的题(对我来说)

#include <bits/stdc++.h>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a)) const ll INF = 1LL<<62;
const int maxn = 1000;
int prime[maxn+10];
int p[maxn+10]; void get_prime()
{
F(i,2,maxn)
{
if(!p[i]) prime[++prime[0]]=i;
for(int j=1;j<=prime[0]&&prime[j]*i<=maxn;++j)
{
p[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
} ll a[50050];
void dfs(ll num,int k,int sum,int limit)
{
if(sum>47777) return ;
if(a[sum]==0||a[sum]>num) a[sum]=num;
for(int i=1;i<=limit;++i)
{
if(num>INF/prime[k]) break;
num*=prime[k];
if(num>INF) break;
dfs(num,k+1,sum*(i+1),i);
}
} void init()
{
mem(a,0);dfs(1,1,1,62);
} int f[100][2]; ll calc(ll num)
{
mem(f,0);
int cnt=0;
for(int i=1;prime[i]<=num/prime[i];++i) if(num%prime[i]==0)
{
f[++cnt][0]=prime[i];
while(num%prime[i]==0) { f[cnt][1]++;num/=prime[i]; }
}
if(num!=1) f[++cnt][0]=num,f[cnt][1]=1;
ll ans=1;
F(i,1,cnt) ans*=(ll)(f[i][1]+1);
return ans;
} void solve(int k)
{
for(ll x=2;x*x<=4*(x+k);++x)
{
if(x==calc(x+k)) { printf("%I64d\n",x+k );return; }
}
puts("Illegal");
} int main()
{
int t,type,k;
get_prime();
init();
scanf("%d",&t);
F(qq,1,t)
{
scanf("%d %d",&type,&k);
printf("Case %d: ",qq );
if(type==0)
{
if(a[k]==0) puts("INF");
else printf("%I64d\n",a[k] );
}
else
{
solve(k);
}
}
return 0;
}

HDU 4542 小明系列故事——未知剩余系 (数论|反素数)的更多相关文章

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

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

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

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

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

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

  4. HDU4542 小明系列故事——未知剩余系

    大赞的数论题: 大致思路: 对于TYPE=1的情况,认为 X 中有 X-K个约数,求最小的X,X-K>0 那么化为B+K的约数为B, 我们知道(B+K)的约数<=2*SQRT(B+K);这 ...

  5. hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  6. HDU 4511 小明系列故事——女友的考验 (AC自动机+DP)

    小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  7. HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)

    小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  8. HDU 4828 小明系列故事——捉迷藏

    漂亮妹子点击就送:http://acm.hdu.edu.cn/showproblem.php?pid=4528 Time Limit: 500/200 MS (Java/Others)    Memo ...

  9. HDU - 4511 小明系列故事――女友的考验(AC自己主动机+DP)

    Description 最终放寒假了,小明要和女朋友一起去看电影.这天,女朋友想给小明一个考验,在小明正准备出发的时候.女朋友告诉他.她在电影院等他,小明过来的路线必须满足给定的规则:  1.如果小明 ...

随机推荐

  1. 多线程网页爬虫 python 实现(二)

    #!/usr/bin/env python #coding=utf-8 import threading import urllib import re import time cur=0 last= ...

  2. DirectX11 学习笔记5 - D3DXMath 库

    directx11 特别推出了一个数学库 用于向量 矩阵的计算.并且使用128位 同一时候计算4条32位数据 (SIMD) 之前基本是用的directx10math.h这个头文件.  这个数学库既然是 ...

  3. Intel processor brand names-Xeon,Core,Pentium,Celeron----Atom

    http://en.wikipedia.org/wiki/Intel_atom Intel Atom From Wikipedia, the free encyclopedia   (Redirect ...

  4. HDU 2955 Robberies(01背包变形)

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  5. ActiveMQ(四) 转

    package pfs.y2017.m11.mq.activemq.demo04; import javax.jms.Connection; import javax.jms.ConnectionFa ...

  6. Gym - 101164C - Castle KMP

    题目链接:传送门 题解: 利用KMP的fail失配数组,快速找到当前后缀与前缀的公共前缀点 #include<bits/stdc++.h> using namespace std; #pr ...

  7. Mac OS用docker Desktop安装单节点kubernetes

    方案: 安装方式:阿里云minikube,k8s官方minikube,kubeadm, docker Desktop中自带第k8s 安装环境:在linux虚拟机中安装k8s,在macos中安装k8s, ...

  8. Hadoop提供的reduce函数中Iterable 接口只能遍历一次的问题

    今天在写MapReduce中的reduce函数时,碰到个问题,特此记录一下: void reduce(key, Iterable<*>values,...) { for(* v:value ...

  9. Cache 简介

    一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之 ...

  10. OpenMAX IL介绍与其体系

    1  OpenMAX IL介绍与其体系 这一部分的文档描写叙述 OpenMAX IL的特性与体系. 1.1  OpenMAX IL 简述 OpenMAX IL 软件接口层定义了一套API.用于訪问系统 ...