题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204

解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子。

不详细说了,自己一开始也忽略了三个素数的乘积的乘方的情况。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 typedef long long INT;
 8 INT prim[70];
 9
10 int dabiao()
11 {
12     int f = 0;
13     for(int i = 2;i < 60;++i)
14     {
15         int flag = 1;
16
17         for(int j = 2;j < i;++j)
18         if(i % j == 0)
19         {
20             flag = 0;
21             break;
22         }
23         if(flag) prim[f++] = i;
24     }
25     return f;
26 }
27
28 int calc(INT a,INT b,INT n)
29 {
30     INT s = 1;
31     while(b--)
32     {
33         if((INT)(n / a) <= s) return 0;
34         s *= a;
35     }
36     return 1;
37 }
38 int main()
39 {
40     INT n;
41     int num = dabiao();
42     while(scanf("%I64d",&n)!=EOF)
43     {
44         INT tot = 1;
45         for(int i = 0;i < num;++i)
46         {
47             INT temp = (INT)pow((double)n,1.0 / prim[i]);
48             if(temp == 1 ) break;   //开方之后不足1的话,则退出
49             tot += temp - 1;   //减1是因为每次都会统计到1
50         }
51         for(int i = 0;i < num;++i)
52         for(int j = i+1;j < num;++j)
53         {
54             INT temp = pow((double)n,1.0/(prim[i] * prim[j]));
55             if(temp == 1) break;
56             tot -= temp - 1;
57         }
58         for(int i = 0;i < num;++i)
59         for(int j = i + 1;j < num;++j)
60         for(int k = j + 1;k < num;++k)
61         {
62             INT temp = pow((double)n,1.0/(prim[i] * prim[j] * prim[k]));
63             if(temp == 1) break;
64             tot += temp - 1;
65         }
66         printf("%I64d\n",tot);
67     }
68     return 0;
69 }

View Code

转载于:https://www.cnblogs.com/xiaxiaosheng/p/3870300.html

HDU 2204 Eddy's爱好(容斥原理)相关推荐

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

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

  2. 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 ...

  3. Eddy's爱好 HDU - 2204

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

  4. hdu2204 Eddy's爱好 打表+容斥原理

    Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣. 这些特殊数是这样的:这些数都能表示成M^K,M和K ...

  5. hdu 1210 Eddy's 洗牌问题

    hdu 1210 Eddy's 洗牌问题 Problem DescriptionEddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1 ...

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

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

  7. hdu 2204 容斥原理

    点击打开链接 以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776 题目:求出1-N里面能表示 成M^K的数有多少个 求A^B在 ...

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

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

  9. HDU 1162 Eddy's picture (最小生成树)(java版)

    Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点 ...

最新文章

  1. Alan Kay等专家领衔,北京智源大会6月24日精彩预告
  2. leetcode算法题--“气球” 的最大数量
  3. java excel转word表格_java利用poi生成/读取excel表格、生成word
  4. pyecharts第三节、仪表盘
  5. 深有体会的积极人生态度
  6. WCF中绑定的简单介绍
  7. Go语言 gRPC 实践(一)
  8. xpath 简单小记
  9. 原生App VS 移动Web App
  10. 外设驱动库开发笔记28:W5500以太网控制器
  11. Linux中arp表的老化机制
  12. CentOS7(Linux)详细安装教程
  13. 二元函数可微与切平面存在的关系
  14. 阿里巴巴四十大盗计算机病毒,泄密 阿里巴巴和四十大盗 全文 - 故事365
  15. Hadoop(八)网站流量分析
  16. 【折半查找二叉判定树】
  17. 7款非常棒的flash游戏菜单启动界面
  18. 毕业设计-基于微信小程序的“掌上实验室” 安全教育与管理系统
  19. php中mysqli_fetch_assoc( )与mysqli_fetch_row( )的区别
  20. IOS 自定义 滑动返回 手势

热门文章

  1. java epoll select_字节跳动高频面试题,操作系统/算法/Java等。
  2. 160 - 1 Acid burn
  3. mysql启动时报错:Starting MySQL ERROR The server quit without updating PID file
  4. Paxos算法(Basic Paxos 与 Multi-Paxos思想)
  5. edp1.2和edp1.4_EDP​​的完整形式是什么?
  6. stl标准模板库_C ++标准模板库(STL)中的array :: fill()
  7. Java BigDecimal floatValue()方法与示例
  8. ejs获取js变量值_EJS变量(注入值)
  9. PUSHAD和POPAD,以及PUSHA和POPA
  10. 浅谈socket网络编程函数参数(二)