Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣。
这些特殊数是这样的:这些数都能表示成M^K,M和K是正整数且K>1。
正当他再度沉迷的时候,他发现不知道什么时候才能知道这样的数字的数量,因此他又求助于你这位聪明的程序员,请你帮他用程序解决这个问题。
为了简化,问题是这样的:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数。

打表+容斥原理

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 #include<math.h>
 5 using namespace std;
 6 typedef long long ll;
 7 const int pnum=36;
 8 const double eps=1e-8;
 9
10 int num[40]={0,
11     2,3,5,6,7,
12     10,11,13,14,15,
13     17,19,21,22,23,
14     26,29,30,31,33,
15     34,35,37,38,39,
16     41,42,43,46,47,
17     51,53,55,57,58,
18     59};
19 int bit[40]={0,
20     1,1,1,2,1,
21     2,1,1,2,2,
22     1,1,2,2,1,
23     2,1,3,1,2,
24     2,2,1,2,2,
25     1,3,1,2,1,
26     2,1,2,2,2,
27     1};
28 int high[40]={0,
29     1000000000,1000000,3981,1000,372,
30     63,43,24,19,15,
31     13,8,7,6,6,
32     4,4,3,3,3,
33     3,3,3,2,2,
34     2,2,2,2,2,
35     2,2,2,2,2,
36     2};
37
38 ll n;
39
40 ll QP(ll a,int i){
41     ll ans=1,tmp=a;
42     while(i){
43         if(i&1)ans*=tmp;
44         tmp*=tmp;
45         i>>=1;
46     }
47     return ans;
48 }
49
50 int check(int i){
51     int l=1,r=high[i];
52     while(l<=r){
53         int m=l+((r-l)>>1);
54         ll res=QP(m,num[i]);
55     //    printf("%d %d %d %lld\n",l,r,m,res);
56         if(res<=n)l=m+1;
57         else r=m-1;
58     }
59     return r-1;
60 }
61
62 int main(){
63 //    n=9;
64 //    printf("%d\n",check(1));
65     while(scanf("%lld",&n)!=EOF){
66         ll ans=1;
67         for(int i=1;i<=pnum;++i){
68 //            printf("%d\n",check(i));
69             if(bit[i]%2)ans+=check(i);
70             else ans-=check(i);
71         }
72         printf("%lld\n",ans);
73     }
74     return 0;
75 }

View Code

转载于:https://www.cnblogs.com/cenariusxz/p/6592356.html

hdu2204 Eddy's爱好 打表+容斥原理相关推荐

  1. HDU2204 Eddy's爱好(容斥原理)

    题目问[1,n]有几个数是$m^k (k>1)$形式. 如果这样考虑,m已知k未知,对于每一个m统计其k的数量即$\lfloor log_mn \rfloor$个,再容斥,然而m太多了,完全不可 ...

  2. hdu-2204 Eddy's爱好 nyoj 526

    hdu : http://acm.hdu.edu.cn/showproblem.php?pid=2204 nyoj :  http://acm.nyist.net/JudgeOnline/proble ...

  3. Eddy's爱好 HDU - 2204

    从1到n中,平方数的个数为n^(1/2),立方数的个数为n^(1/3),那么六次方的个数为n^(1/6),因为我们在算平方和立方的时候把六次方算过了,那么就要见去一次.接下来就是一个简单的容斥原理了, ...

  4. HDU - 2204 Eddy‘s爱好(尚未完全解决)

    HDU - 2204 Eddy's爱好 题意: 给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数 题解: 参考题解: 我们先举例找找规律 1~10以内2的次方有多少个?有 ...

  5. hdu 2204 Eddy's爱好

    求$[1,n]$种有多少正整数可以表示为$p^q$的形式,其中$p,q$为正整数,且$q \ge 2$ $1 \le n \le 10^{18}$ 1. 若$p^q \le n$,则$\forall ...

  6. HDU 2204 Eddy's爱好(容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204 解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子. 不详细说了, ...

  7. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

  8. hdu-2204(容斥原理)

    Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  9. 第15课:如何用RPA循环填写表单?(练兵场二)

    **_跟鹏飞学RPA--你爱学习,我爱分享.学习RPA就是这么简单. 今天我们开始第二场专项练兵--循环填写表单. ★练兵介绍 场景:从指定表格中获得文本内容,在表单上循环填写并提交.要求将获取表格内 ...

最新文章

  1. linux 命令自动提示错误信息,Linux基础命令---sar显示系统活动信息
  2. python处理多个excel文件-Python将多个excel文件合并为一个文件
  3. ftp: connect: 没有到主机的路由_Qt之FTP上传/下载文件操作
  4. 如何用Unity和Cardboard做一款VR游戏
  5. zoj - 2112 带修改主席树 + 空间优化
  6. net 架构师-数据库-sql server-003-T-SQL 基本语句
  7. matlab2c使用c++实现matlab函数系列教程-sinh函数
  8. 【ACM】nyoj_2_括号配对问题_201308091548
  9. linux 串口 抓包工具下载,Device Monitoring Studio串口抓包工具使用教程
  10. 百度网盘链接提取码接口实现
  11. 关于求两个球相交部分体积计算
  12. linux系统安装word,如何在Linux中安装FreeOffice 2018
  13. UserBehavior 阿里巴巴淘宝用户行为数据字段分析
  14. 「思维拓展/个人提升」简说
  15. linux常用指令pro,第二章:Linux常用基本命令及常用技巧
  16. 回顾2022,展望2023,一个普通程序员的自述和分享
  17. python 累加器_python中的累加器
  18. 服务器自定义npc音乐,Custom NPC 自定义NPC模组自定义音乐添加教程
  19. uview + uni-app 开发app,密码显示隐藏功能不生效
  20. 南阳理工学院ACM多乐赛暨16级退役纪念赛 A 食堂的座位

热门文章

  1. python编程案例教程书籍-Python程序设计案例教程
  2. python基础包括什么-Python基础教程 模块包含什么
  3. Linux下使用Speedtest测试网速教程
  4. unity快速接入第三方sdk_直播美颜SDK实现需要具备哪些条件
  5. spring下redis开发环境搭建
  6. Restful设计相关
  7. JDK源码分析(7)之 Reference 框架概览
  8. Android之自定义View以及画一个时钟
  9. Cocos2d 之FlyBird开发---GameData类
  10. Android 获取SD卡的图片资源