题目描述


首先定义"special number":
如果对于一个数字B,存在一个数字A(0<A<=B),并同时满足 B%A=0 和 gcd(A,B) != 1 ,那么我们就说A是B的"special number"。
再定义一个函数f(x)表示x的"special number"的数量。并且如果f(x)%2=1时,我们就称x为"real number"。
现在给你两个数字x和y且1<=x<=y<=2^63-1,求再[x,y]区间内"real number"的数量。

分析:

看到范围后,这题第一眼就打表有木有,然后自己拿着数据去YY.......,然后就搞定。
然而就是挂掉了。最后发现竟然在开方这里。
赛后试了下,如果这样: ans = sqrt(n) 就过不了
如果改成:ans = sqrt((long double)n) 就过了
然后本人手贱又尝试了一下这个:ans = sqrt((double)n) 还是过不了
难道long double 和 double 不是一个东西 ?
unsigned long long 开方竟然会有精度损失 ?
迷也......

代码如下:

@Frosero
#include <iostream>
#include <cstdio>
#include <cmath>
#define INF 0x3f3f3f3f using namespace std; int T;
unsigned long long p,a,b,x,y; unsigned long long how(unsigned long long n){
unsigned long long ans,tmp;
if(n < 6) return 0;
ans = n / 2 - 2; tmp = sqrt((long double)n);
if(tmp & 1) ans++;
return ans;
} int main(){
scanf("%d",&T);
while(T--){
cin>>a>>b;
y = how(b); x = how(a-1);
cout<<y - x<<endl;
}
return 0;
}

最新文章

  1. Java判断字符串是否是数值
  2. CodeForces Round#313
  3. eclipse常用插件
  4. [BZOJ3156]防御准备(斜率优化DP)
  5. javascript对象的一点理解
  6. TOMCAT启动时报错:the CATALINA_HOME environment variable is not defined correctly
  7. OpenShift
  8. CDH 的Cloudera Manager免费与收费版的对比表
  9. HDU 5584 LCM Walk 数学
  10. [AngularJS] Introduction to ui-router
  11. VPN怎么连?
  12. Linux计算机进程地址空间与内核装载ELF
  13. cocos2d-x anchorPoint
  14. hdu 1024(dp)
  15. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注
  16. Java经典编程题50道之三十二
  17. C++ Primer 有感(命名的强制类型转换)
  18. subprocess
  19. ueditor富文本编辑器跨域上传图片解决办法
  20. 20155205 2016-2017-2 《Java程序设计》第9周学习总结

热门文章

  1. Delphi DBGrid 实现复选框
  2. node 桌面应用开发
  3. C#调PowerShell在SCVMM中创建虚拟机时,实时显示创建进度
  4. idea 配置tomcat
  5. 不是有效的win32应用程序
  6. Leetcode 跳跃游戏 II
  7. charles使用教程
  8. Cocos2d-x之Node
  9. nginx+tomcat负载均衡实验
  10. hive HQL笔记