hdu2204Eddy's爱好
大概题意是要你输出1到n中,可以表示成a^b的数,a,b都是大于0的整数的个数,
当中b大于1。
由于1到n中。可以全然开平方的个数就是(n^0.5)的整数部分。
以此类推能够得到,全然开立方。全然开四次方各种的次数。
这种话,要枚举的数量太大。有什么办法能够让枚举的数量降低呢?
有的,因为随意一个大于1的整数都能够表示成两个素数的乘积。
于是。可以全然开平方的个数包含了可以全然开四次方,
八次方。十六次方以此类推的个数。
于是,可以知道,仅仅须要枚举可以全然开素数次方的个数就可以。
又由于n最大不会超过10^18,由于64位整型号可以表示的最大数
大概就是9*10^18多,所以不须要特地写个大数。
又由于这样。所以素数仅仅须要枚举到大小不超过63就可以。由于
2^63-1就是64位整型的最大值。所以这个n最大,开个63次方的整数部分
结果肯定为1,为1的话就代表可以1到n中可以全然开这个次方
的数仅仅有1个,又由于1可以开随意次方,所以,这个数肯定是1啦,
于是超过63的素数不是必需枚举了,由于仅仅有1可以开这么多次方。
对于一个数n,从小到大枚举到使n开次方为1就可以,再把前面
全部开次方的结果都累加,再除去之中反复的部分。终于结果就是
题意所要求的个数。
反复的部分是说,可以全然开六次方的肯定也可以全然开二次方和三次方,
这个能全然开六次方的个数被反复加了一次。所以要减去一次,
以此类推把全部反复的部分除去就可以。
另一点,这个题目,有的人用long long读入n的时候,会wa,
这个的话,是各种编译器的原因,用cin读入就好了,
至于有的人说缺失精度什么的。仅仅是想多了。
我的代码例如以下:
#include<iostream>
#include<cmath>
using namespace std;
int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61};
void result(long long x)
{
int i,j,k;
long long tmp,ans=1;
for(i=0;;i++)
{
tmp=(long long)(pow(x,1.0/prime[i]));
if(tmp<2)
break;
ans+=tmp-1;
for(j=i+1;;j++)
{
tmp=(long long)(pow(x,1.0/(prime[i]*prime[j])));
if(tmp<2)
break;
ans-=tmp-1;
for(k=j+1;;k++)
{
tmp=(long long)(pow(x,1.0/(prime[i]*prime[j]*prime[k])));
if(tmp<2)
break;
ans+=tmp-1;
}
}
}
printf("%lld\n",ans);
}
int main()
{
long long x;
while(cin>>x)
result(x);
}
hdu2204Eddy's爱好的更多相关文章
- 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库 ...
- 孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录
孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数 ...
- HDU-2204-Eddy's爱好-容斥求n以内有多少个数形如M^K
HDU-2204-Eddy's爱好-容斥求n以内有多少个数形如M^K [Problem Description] 略 [Solution] 对于一个指数\(k\),找到一个最大的\(m\)使得\(m^ ...
- HDU-2204- Eddy’s爱好 (容斥原理)
题意 给出一个数n,问1-n中有多少个数可以表示为m^k,m,k均为正整数且k>1 (1<=n<=1^18) 题解 (一开始^以为是异或懵逼了好久....) 额,显然1这个数比较讨厌 ...
- 09-jQuery案例:爱好选择器
爱好选择器HTML 1 <!DOCTYPE html> 2 <head> 3 <meta charset="UTF-8"> 4 <titl ...
- 【转】39个让你受益的HTML5教程
闲话少说,本文作者为大家收集了网上学习HTML5的资源,期望它们可以帮助大家更好地学习HTML5. 好人啊! 不过,作者原来说的40个只有39个,因为第5个和第8个是重复的. 原文在此! 1. 五分钟 ...
- C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能
随着微信开逐步开放更多JSSDK的接口,我们可以利用自定义网页的方式来调用更多微信的接口,实现我们更加丰富的界面功能和效果,例如我们可以在页面中调用各种手机的硬件来获取信息,如摄像头拍照,GPS信息. ...
- CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果
CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果 开始 一图抵千言.首先来看鼠标拖动太阳(光源)的情形. 然后是鼠标拖拽旋转模型的情形. 然后我们移动摄像 ...
- 抱歉!15:44-16:39阿里云RDS故障造成全站不能正常访问
非常非常抱歉!2016年3月7日15:44-16:39,由于阿里云RDS(云数据库)故障,造成全站不能正常访问,给您带来了很大很大的麻烦,恳请您的谅解! 故障是在15:44开始出现的,应用日志中出现大 ...
随机推荐
- [php] 表单注意事项
什么是 htmlspecialchars()方法? htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体. 预定义的字符是: & (和号) 成为 & &q ...
- C++ STL容器底层机制
1.vector容器 vector的数据安排以及操作方式,与array非常相似.两者的唯一区别在于空间的运用的灵活性.array是静态空间,一旦配置了就不能改变.vector是动态空间,随着元素的加入 ...
- JavaScript正则表达式-重复次数(数量词)
*:表示对前面表达式的匹配出现零次或多次. var reg_pattern = /bo*/;//匹配b.bo.boooo +:表示对前面表达式的匹配连续出现一次或多次. var reg_pattern ...
- 算法竞赛中c++一些需要注意的错误
1. 关于精度: 取整 除法取整: (除数为正)被除数为正时系统除法为向下取整,被除数为负时系统除法为向上取整. 向上取整(被除数非负,除数为正): 一般写法(有bug): int cal(int x ...
- PAT Basic 1069
1069 微博转发抽奖 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整 ...
- http过程
当在浏览器里输入URL地址时,http的通讯过程: 1) 连接 DNS解析:URL——>DNS服务器(找到返回其ip,否则继续将DNS解析请求传给上级DNS服务器) Socket连接:通过IP和 ...
- 【05】Number图解
[05]Number图解
- x86 保护方式 简介 一
80386 三种工作方式 实模式 保护模式和虚拟86模式 只有在保护方式下 全部32条地址线才有效 可以寻址高达4g字节的物理地址空间 超过1m的内存空间 被成为扩展的内存空 ...
- 刷题总结——分糖果(bzoj2330)
题目: Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖 ...
- cf468B Two Sets
Little X has n distinct integers: p1, p2, ..., pn. He wants to divide all of them into two sets A an ...