博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu4279Number<数论>
阅读量:4487 次
发布时间:2019-06-08

本文共 1358 字,大约阅读时间需要 4 分钟。

链接:

题意

:给定一个数N, 在[1,N)中的数M, gcd( M, N ) != 1, 且N%M !=  0; 那么M就为N的一个special number, f( x ) 为统计 x 的special number的个数, 如果f( x )为奇数,那么x就为一个 real numbers. 求给定区间的real number数.

思路:

先看f(x),由题意得f(x)=x-phi( x ) - g(x)+1;(  phi(x)为欧拉函数, g(x)为因子个数, +1 是因为1在phi(x)和g(x)中都算了 );

而real number只与f(x)的机偶性有关所以我们只讨论phi(x)和g(x)的奇偶性;

我们知道当x>2时phi(x)为偶数;

g(x)约数个数,我们由基本定理可得,x=p1^e1*p2^e2*…pn^en,而由计数方法易知 x的约数个数为 g(x)=(e1+1)*(e2+1)*…(en+1)的;

所以若要使 g(x) 为奇数,充要条件是(ei+1)都为奇数,即质数的幂都为偶数。所以此时 x必然是一个平方数;

综上,x为平方数,其约数个数为奇数;x为非平方数,其约数个数为偶数;

所以,当x>2时, 若x为平方数,f(x)=x-奇-偶+1,要使f(x)为奇数,则x必为奇数;若x为非平方数,f(x)=x-偶-偶+1,

要使f(x)为奇数,则x必为偶数。 当x=1或2时,f(x)=0.

综上,real numbers F(x) 的值为[3,x]中,奇数平方数+偶数非平方数的个数和,即 偶数个数-偶数^2的个数+奇数^2的个数。

而偶数个数为 x/2-1,-1是为了把2减掉。偶数^2个数为 sqrt(x)/2,奇数^2个数为 ( sqrt(x)-(sqrt(x)/2) )-1,

这里-1是为了把1减掉。所以,化简后,F(x) = x/2-1+(sqrt(x)%2? 0: -1).

View Code
1 #include
2 #include
3 #include
4 #include
5 6 __int64 get(__int64 x) 7 { 8 if(x<=2) return 0; 9 return x/2-1+( (__int64)sqrt(1.0*x) %2? 0: -1); 10 }11 12 int main()13 {14 int T;15 scanf( "%d", &T );16 while(T--)17 {18 __int64 a, b;19 scanf("%I64d%I64d", &a, &b);20 printf("%I64d\n", get(b)-get(a-1));21 }22 }

 

 

 

转载于:https://www.cnblogs.com/jian1573/archive/2013/01/08/2851862.html

你可能感兴趣的文章
矩阵乘法-洛谷P2233 [HNOI2002] 公交车路线
查看>>
openstack云主机硬盘复制查询
查看>>
写个神经网络,让她认得我`(๑•ᴗ•๑)(Tensorflow,opencv,dlib,cnn,人脸识别)
查看>>
《程序是怎样跑起来的》第三章
查看>>
Jquery回到顶部效果
查看>>
开园第一笔
查看>>
Spark项目之电商用户行为分析大数据平台之(七)数据调研--基本数据结构介绍...
查看>>
原来fb可以在一个工程里面输出多个swf模块
查看>>
Codeforces Round #271 (Div. 2) E. Pillars 线段树优化dp
查看>>
Codeforces Round #FF (Div. 2) D. DZY Loves Modification 优先队列
查看>>
【学习】logger
查看>>
Delphi APP 開發入門(十)REST Client 開發
查看>>
elk
查看>>
.net 模糊匹配路径
查看>>
用包来组织模型
查看>>
ORA-29857: 表空间中存在域索引和/或次级对象
查看>>
LeetCode58 Length of Last Word
查看>>
Python基础语法 系统学习
查看>>
推荐15款好用的JS开发工具
查看>>
ios开发之数据的持久化存储机制
查看>>