天津网络赛---数论分析题)
来源:互联网 发布:惠州惠阳区网络问政 编辑:程序博客网 时间:2024/04/30 14:45
HDU4279(2012年天津网络赛---数论分析题)
分类: 数论2013-08-03 10:58 170人阅读 评论(0) 收藏 举报
题目:Number
题意: 给出一个f(x),表示不大于x的正整数里,不整除x且跟x有大于1的公约数的数的个数。定义F(x),为不大于x的正整数里,满足f(x)的值为奇数的数的个数。题目就是求这个F(x)。
网上很多方法就是打表找规律,已经谈不上是算法了。
这里我们可以来分析:
不整除x且跟x有大于1的公约数的数的个数 f(x)=x-约数个数-互质数个数+1 。
把x素因子分解,易知x的约数个数为(质数的幂+1)的累乘。所以若要使约数为奇数,充要条件是(质数的幂+1)都为奇
数,即质数的幂都为偶数。所以此时x必然是一个平方数。
综上,x为平方数,其约数个数为奇数;x为非平方数,其约数个数为偶数。
互质数个数,我们有欧拉函数。
这里用到一个结论:欧拉函数在n>2时,值都为偶数。
所以,
当x>2时:
若x为平方数,f(x)=x-奇-偶+1,要使f(x)为奇数,则x必为奇数;
若x为非平方数,f(x)=x-偶-偶+1,要使f(x)为奇数,则x必为偶数。
当x=1或2时,f(x)=0.
综上,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).
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
- #include <math.h>
- using namespace std;
- typedef long long LL;
- LL Solve(LL n)
- {
- LL ans=0;
- if(n<6) return 0;
- ans+=n/2-2;
- if((LL)sqrt(1.0*n)&1) ans++;
- return ans;
- }
- int main()
- {
- LL a,b,t;
- cin>>t;
- while(t--)
- {
- cin>>a>>b;
- cout<<Solve(b)-Solve(a-1)<<endl;
- }
- return 0;
- }
- 天津网络赛---数论分析题)
- HDU4279(2012年天津网络赛---数论分析题)
- hdu 4279 Number 2012天津网络赛 数论 分析
- HDU 4279 Number(2012年天津网络赛---数论分析题)
- 2012天津网络赛
- 2012 天津网络赛小记
- 2012天津赛区网络赛第二题---Number(hdu4279)
- hdu4279 Number-------天津网络赛 打表找规律
- 2012天津网络赛的1004
- hdu4287 Intelligent IME-----天津网络赛
- 2012天津赛区网络赛第三题--Island Transport(hdu4280)
- 2012天津赛区网络赛第一题---Faulty Odometer(hdu4278)
- 2012天津赛区网络赛第五题---A very hard mathematic problem(hdu4284)
- codeforces 数论分析题
- 天津赛
- 天津小汽车竞价分析
- HDU——4279(2012天津区域赛,数论相关的问题)
- 【转】天津赛区网络赛非正式题解 by RoBa
- hdu(4422)The Little Girl who Picks Mushrooms
- HDU4373(组合公式推导+Lucas定理+中国剩余定理)
- 易语言注册多个热键源码
- 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- JNI学习积累之一 ---- 常用函数大全
- 天津网络赛---数论分析题)
- hdu 4584水题
- UVA 270 Lining Up
- 高次同余方程式的解数及解法
- 周渝民默认与喻虹渊恋情 七夕不送女友礼物
- POJ2154(Pólya定理与欧拉函数优化)
- 理想的技术面试过程
- 闪回删除例子
- hdu 4585 shaolin (暴力)