HDU 2204 Eddy's爱好(容斥原理)
题目链接: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爱好(容斥原理)相关推荐
- HDU - 2204 Eddy‘s爱好(尚未完全解决)
HDU - 2204 Eddy's爱好 题意: 给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数 题解: 参考题解: 我们先举例找找规律 1~10以内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 ...
- Eddy's爱好 HDU - 2204
从1到n中,平方数的个数为n^(1/2),立方数的个数为n^(1/3),那么六次方的个数为n^(1/6),因为我们在算平方和立方的时候把六次方算过了,那么就要见去一次.接下来就是一个简单的容斥原理了, ...
- hdu2204 Eddy's爱好 打表+容斥原理
Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣. 这些特殊数是这样的:这些数都能表示成M^K,M和K ...
- hdu 1210 Eddy's 洗牌问题
hdu 1210 Eddy's 洗牌问题 Problem DescriptionEddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1 ...
- HDU2204 Eddy's爱好(容斥原理)
题目问[1,n]有几个数是$m^k (k>1)$形式. 如果这样考虑,m已知k未知,对于每一个m统计其k的数量即$\lfloor log_mn \rfloor$个,再容斥,然而m太多了,完全不可 ...
- hdu 2204 容斥原理
点击打开链接 以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776 题目:求出1-N里面能表示 成M^K的数有多少个 求A^B在 ...
- hdu-2204 Eddy's爱好 nyoj 526
hdu : http://acm.hdu.edu.cn/showproblem.php?pid=2204 nyoj : http://acm.nyist.net/JudgeOnline/proble ...
- HDU 1162 Eddy's picture (最小生成树)(java版)
Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点 ...
最新文章
- Alan Kay等专家领衔,北京智源大会6月24日精彩预告
- leetcode算法题--“气球” 的最大数量
- java excel转word表格_java利用poi生成/读取excel表格、生成word
- pyecharts第三节、仪表盘
- 深有体会的积极人生态度
- WCF中绑定的简单介绍
- Go语言 gRPC 实践(一)
- xpath 简单小记
- 原生App VS 移动Web App
- 外设驱动库开发笔记28:W5500以太网控制器
- Linux中arp表的老化机制
- CentOS7(Linux)详细安装教程
- 二元函数可微与切平面存在的关系
- 阿里巴巴四十大盗计算机病毒,泄密 阿里巴巴和四十大盗 全文 - 故事365
- Hadoop(八)网站流量分析
- 【折半查找二叉判定树】
- 7款非常棒的flash游戏菜单启动界面
- 毕业设计-基于微信小程序的“掌上实验室” 安全教育与管理系统
- php中mysqli_fetch_assoc( )与mysqli_fetch_row( )的区别
- IOS 自定义 滑动返回 手势
热门文章
- java epoll select_字节跳动高频面试题,操作系统/算法/Java等。
- 160 - 1 Acid burn
- mysql启动时报错:Starting MySQL ERROR The server quit without updating PID file
- Paxos算法(Basic Paxos 与 Multi-Paxos思想)
- edp1.2和edp1.4_EDP​​的完整形式是什么?
- stl标准模板库_C ++标准模板库(STL)中的array :: fill()
- Java BigDecimal floatValue()方法与示例
- ejs获取js变量值_EJS变量(注入值)
- PUSHAD和POPAD,以及PUSHA和POPA
- 浅谈socket网络编程函数参数(二)