题目链接:http://acm.zzuli.edu.cn/problem.php?id=2623

  看到这题第一眼想到的打表,首先筛选出来1e6之内的素数,然后我们再对1e6之内的数求其每个素因子的最高幂次有没有是偶数的情况,当然这样直接做的话肯定会超时的,所以我们要优化一下,在这个数除以某个素因子之后,他肯定是比原来小的,由于我们是顺序打表,所以比这个数小的数的情况我们已经判断过了,所以直接利用就行了。
  1. #include<set>
  2. #include<map>
  3. #include<stack>
  4. #include<queue>
  5. #include<cmath>
  6. #include<cstdio>
  7. #include<cctype>
  8. #include<string>
  9. #include<vector>
  10. #include<climits>
  11. #include<cstring>
  12. #include<cstdlib>
  13. #include<iostream>
  14. #include<algorithm>
  15. #define max(a, b) (a > b ? a : b)
  16. #define min(a, b) (a < b ? a : b)
  17. #define mst(a) memset(a, 0, sizeof(a))
  18. #define _test printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
  19. using namespace std;
  20. typedef long long ll;
  21. typedef pair<int, int> P;
  22. const double eps = 1e-;
  23. const int INF = 0x3f3f3f3f;
  24. const ll ll_INF = 0x3f3f3f3f3f3f3f;
  25. const int maxn = 1e6+;
  26. int prime[maxn];
  27. bool ok[maxn];
  28. void solve1() { //筛素数
  29. fill(prime, prime+maxn, );
  30. prime[] = prime[] = ;
  31. int end = sqrt(maxn) + 0.5;
  32. for (int i = ; i<=end; ++i)
  33. if (prime[i])
  34. for (int j = i*; j<maxn; j+=i)
  35. prime[j] = ;
  36. }
  37. bool solve2(int n) {
  38. int t = n;
  39. if (prime[t]) //显然素数不行
  40. return false;
  41. for (int i = ; i<t && n != ; ++i) {
  42. int cnt = ;
  43. if (prime[i]) { //计算素因子最高幂次
  44. while(!(n%i)) {
  45. n /= i;
  46. ++cnt;
  47. }
  48. }
  49. if ((!(cnt%) && cnt)) //如果某个素因子最高幂次是偶数,那么符合要求
  50. return true;
  51. else if (n < t)
  52. return ok[n]; //n<t的情况我们已经算出来了,所以我们直接返回就是了
  53. }
  54. return false;
  55. }
  56. int main(void) {
  57. solve1();
  58. for (int i = ; i < maxn; ++i) //打表,方便下面O(1)查找
  59. ok[i] = solve2(i);
  60. int t;
  61. scanf("%d", &t);
  62. while(t--) {
  63. int n;
  64. scanf("%d", &n);
  65. printf(ok[n] ? "YES\n" : "NO\n");
  66. }
  67. return ;
  68. }

zzulioj - 2623: 小H的作业题的更多相关文章

  1. zzulioj - 2624: 小H的奇怪加法

    题目链接:http://acm.zzuli.edu.cn/problem.php?id=2624 题目描述 小H非常喜欢研究算法,尤其是各种加法.没错加法包含很多种,例如二进制中的全加,半加等.全加: ...

  2. hihocoder 1347 小h的树上的朋友

    传送门 时间限制:18000ms单点时限:2000ms内存限制:512MB 描述 小h拥有$n$位朋友.每位朋友拥有一个数值$V_i$代表他与小h的亲密度.亲密度有可能发生变化.岁月流逝,小h的朋友们 ...

  3. 【渗透笔记】拿下某小H网的全过程

    自从班上A片小王子的7个T资源被封了以后,本小白为造福全班同学,尝试拿下个小H网,先用webrobot搜某些只有小H网才会出现的关键词 本以为直接导出放御剑里跑就行了,然并软.于是用awvs扫了一下, ...

  4. 一个简洁的小H车调运模型

    一个简洁的小H车调运模型 不久前, 帝都B城市到处都是小H车, 理想的小H车应该是布朗运动\均匀分布,可是现实上它们就是不均匀.于是有如下问题: 观察帝都 HD区SY村区域,将其划分成10个用车点,用 ...

  5. 小H和密码

    链接:https://www.nowcoder.com/acm/contest/72/B来源:牛客网 题目描述     小H在击败怪兽后,被一个密码锁挡住了去路     密码锁由N个转盘组成,编号为1 ...

  6. 【Wannafly挑战赛10 - B】小H和密码(DP)

    试题链接:https://www.nowcoder.com/acm/contest/72/B 题目描述     小H在击败怪兽后,被一个密码锁挡住了去路     密码锁由N个转盘组成,编号为1~N,每 ...

  7. BZOJ1505: [NOI2004]小H的小屋

    BZOJ1505: [NOI2004]小H的小屋 Description 小H发誓要做21世纪最伟大的数学家.他认为,做数学家与做歌星一样,第一步要作好包装,不然本事再大也推不出去. 为此他决定先在自 ...

  8. hihocoder-1347 小h的树上的朋友(lca+线段树)

    题目链接: 小h的树上的朋友 时间限制:18000ms 单点时限:2000ms 内存限制:512MB 描述 小h拥有n位朋友.每位朋友拥有一个数值Vi代表他与小h的亲密度.亲密度有可能发生变化. 岁月 ...

  9. Wannafly挑战赛10:A题:小H和迷宫

    题目描述       小H陷入了一个迷宫中,迷宫里有一个可怕的怪兽,血量有N点,小H有三瓶魔法药水,分别可以使怪兽损失a%.b%.c%的血量(之后怪兽的血量会向下取整),小H想合理地运用这三瓶药水,使 ...

随机推荐

  1. react 16 Hooks渲染流程

    useState react对useState进行了封装,调用了mountState. function useState<S>( initialState: (() => S) | ...

  2. vscode java

    https://devblogs.microsoft.com/visualstudio/announcing-visual-studio-code-java-installer/ public cla ...

  3. vCenter6.7的简单安装与使用

    1.VMware的vCenter已经有了很大的改进,安装过程极为简单方便. 2. 下载vCenter的安装包即可. 我这边下载的ISO为: VMware-VIM-all--.iso 网上有资源,通过百 ...

  4. flutter-初识(基础语法)

    前言:笔者学过 java,刚刚接触 flutter,记录下基本的一些语法. 一.认识Flutter Flutter 是 google 推出的,使用的 Dart 语言,它可以跨平台实现 Android ...

  5. WPF 精修篇 旋转 RotateTransForm

    原文:WPF 精修篇 旋转 RotateTransForm 旋转 RotateTransform Angle 角度 CenterY ,CenterX  中心点位置 和缩小一样 左侧 和右侧 做了对比 ...

  6. Java向MySQL新增记录时间误差问题

    参考文档 https://www.jianshu.com/p/115861aad147 https://blog.csdn.net/ai932820942/article/details/845804 ...

  7. 我是如何一步步编码完成万仓网ERP系统的(十二)库存 1.概述

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  8. ASP.NET CORE 2.2 因外键设置的双向导航对象序列化报 循环错误问题的解决

    报错如下: 设置的示例: 解决方案: 在Startup.cs文件中,增加如下代码: services.AddMvc().SetCompatibilityVersion(CompatibilityVer ...

  9. Go函数篇

    1 定义格式 函数构成代码执行的逻辑结构.在Go语言中,函数的基本组成为:关键字func.函数名.参数列表.返回值.函数体和返回语句. Go 语言函数定义格式如下: func FuncName(/*参 ...

  10. rabbitmq 延迟队列

    1.rabbitmq 延时的原理,有2个队列,一个是发送消息,设置消息过期时间或者队列过期时间(死信队列),如果达到过期时间后 将改消息发送到指定的队列中进行处理. 链接:https://share. ...