HDU4279-Number
来源:互联网 发布:金枪鱼代理软件 编辑:程序博客网 时间:2024/06/07 19:47
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4279
题意描述:如果数A是B的特殊数,那么A既不能被B整除,且A与B不能互素。我们定义f(x)为x之内x的特殊数的个数。那么给出两个数,求这两个数之间f(x)为奇数的数的个数,假设G(n)为1到n之间f(x)为奇数的数的个数。
题意分析:经过打表分析可知,当x≤5时,G(x)=0;当x>5时,G(x)从1开始,按照每两个数递增加1的规律递增,
但是在一个数如果是平方数的时候,如果是奇平方数,那就直接递增+1一次,如果是偶平方数,那这次就不递增加1,发现这个规律后,很容易就可以出来了、、、这个规律我们编程打印出来才分析了出来、、、
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main(){
int T;
__int64 m,n;
__int64 sum1,sum2;
scanf( "%d", &T );
while( T -- ){
scanf( "%I64d%I64d", &m, &n );
sum1 = ( m-1 - 4 ) / 2;
sum2 = ( n - 4 ) / 2;
if( (__int64)sqrt( m-1 ) % 2 == 1 )
sum1 ++;
if( (__int64)sqrt( n ) % 2 == 1 )
sum2 ++;
if( m-1 < 6 )
sum1 = 0;
if( n < 6 )
sum2 = 0;
printf( "%I64d\n", sum2-sum1 );
}
return 0;
}
注:后来才知道,当n>2的时候,n的欧拉函数永远是一个偶数。而且当n为平方数,其约数个数为奇数;
n为非平方数,其约数个数为偶数。而 f(x) = x - 约数个数 - 互质数个数 +1 。根据这个可以很快就推出来了。
- HDU4279-Number
- hdu4279 Number
- hdu4279 Number
- hdu4279
- hdu4279
- hdu4279 Number-------天津网络赛 打表找规律
- 2012天津赛区网络赛第二题---Number(hdu4279)
- hdu4279数论
- HDU4279(数论)
- hdu4279 找规律+小想法
- HDU4279(2012年天津网络赛---数论分析题)
- Number
- number
- number
- Number
- number
- number
- Number
- STL的经典文章
- IE hasLayout 属性简介[转]
- How to Run Redis as a Service under Windows
- __sync_fetch_and_add系列的命令
- 解决Struts2+XDK10+xmlparserv2报错问题
- HDU4279-Number
- oracle双机/RAC/Dataguard的区别
- UML 用例图_包含关系和扩展关系和泛化关系
- 为Qt应用程序制作maemo安装包
- 赛灵思收购嵌入式Linux方案提供商PetaLogix
- SQL语句优化技术分析
- 拦截器实现文件过滤(JSP)
- .ASP.NET自定义服务器控件 第4章 组合控件开发CompositeControl
- VC2010对话框中插入视频