分析

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

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

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

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

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

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define F(i,a,b) for(int i=a;i<=b;++i)
  5. #define R(i,a,b) for(int i=a;i<b;++i)
  6. #define mem(a,b) memset(a,b,sizeof(a))
  7. const ll INF = 1LL<<62;
  8. const int maxn = 1000;
  9. int prime[maxn+10];
  10. int p[maxn+10];
  11. void get_prime()
  12. {
  13. F(i,2,maxn)
  14. {
  15. if(!p[i]) prime[++prime[0]]=i;
  16. for(int j=1;j<=prime[0]&&prime[j]*i<=maxn;++j)
  17. {
  18. p[i*prime[j]]=1;
  19. if(i%prime[j]==0) break;
  20. }
  21. }
  22. }
  23. ll a[50050];
  24. void dfs(ll num,int k,int sum,int limit)
  25. {
  26. if(sum>47777) return ;
  27. if(a[sum]==0||a[sum]>num) a[sum]=num;
  28. for(int i=1;i<=limit;++i)
  29. {
  30. if(num>INF/prime[k]) break;
  31. num*=prime[k];
  32. if(num>INF) break;
  33. dfs(num,k+1,sum*(i+1),i);
  34. }
  35. }
  36. void init()
  37. {
  38. mem(a,0);dfs(1,1,1,62);
  39. }
  40. int f[100][2];
  41. ll calc(ll num)
  42. {
  43. mem(f,0);
  44. int cnt=0;
  45. for(int i=1;prime[i]<=num/prime[i];++i) if(num%prime[i]==0)
  46. {
  47. f[++cnt][0]=prime[i];
  48. while(num%prime[i]==0) { f[cnt][1]++;num/=prime[i]; }
  49. }
  50. if(num!=1) f[++cnt][0]=num,f[cnt][1]=1;
  51. ll ans=1;
  52. F(i,1,cnt) ans*=(ll)(f[i][1]+1);
  53. return ans;
  54. }
  55. void solve(int k)
  56. {
  57. for(ll x=2;x*x<=4*(x+k);++x)
  58. {
  59. if(x==calc(x+k)) { printf("%I64d\n",x+k );return; }
  60. }
  61. puts("Illegal");
  62. }
  63. int main()
  64. {
  65. int t,type,k;
  66. get_prime();
  67. init();
  68. scanf("%d",&t);
  69. F(qq,1,t)
  70. {
  71. scanf("%d %d",&type,&k);
  72. printf("Case %d: ",qq );
  73. if(type==0)
  74. {
  75. if(a[k]==0) puts("INF");
  76. else printf("%I64d\n",a[k] );
  77. }
  78. else
  79. {
  80. solve(k);
  81. }
  82. }
  83. return 0;
  84. }

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. android的armeabi和armeabi-v7a

    在ANE中如果SDK调用了so库,则需要把so库放到ANE下Android-ARM/lib/armeabi (调试模式)或者 armeabi-v7a(发行模式)下. 可以贴个ADT代码说明问题: // ...

  2. SVN系列之—-SVN版本回滚的办法

    例:SVN版本为:TortoiseSVN 1.9.7 一.SVN简介 subversion(简称svn)是一种跨平台的集中式版本控制工具,支持linux和windows. 版本控制解决了:*代码管理混 ...

  3. 【转载】回调函数(callback)是什么?

    一个很形象的例子: 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这个例子里,你的电话号码就叫回 ...

  4. Vue 建立工程

    npm install -g vue npm install -g vue-cli vue init webpack my-project cd my-project npm isntall npm ...

  5. openwrt 配置rsync服务

    一: rsyn简介 remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息. rsync是用 “rsyn ...

  6. Android Webview的测试

    1.查看当前的所有窗口: Set contexts= driver.getContextHandles(); System.out.println(contexts); 打印出当前所有的窗口 Set& ...

  7. Android 通过Application 传递数据

    </pre><pre> package com.example.ApplicationTest; import android.app.Application; /** * C ...

  8. Git使用之Permission Denied问题解决

    今天碰到了Git的Permission Denied问题. 在安装好git之后,我们通常会配置username和邮箱 git config --global user.name "zengj ...

  9. HDU 6044 Limited Permutation 读入挂+组合数学

    Limited Permutation Problem Description As to a permutation p1,p2,⋯,pn from 1 to n, it is uncomplica ...

  10. HttpSession and Hibernate session

    一.javax.servlet.http.HttpSession是一个抽象接口   它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是 ...