首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

在某QQ群里遇见的有关问题,一直想不通,望高手解答

2012-04-09 
在某QQ群里遇见的问题,一直想不通,望高手解答!在某QQ群里,别人发的一道题,说是入门级问题,汗。。。求高手解答

在某QQ群里遇见的问题,一直想不通,望高手解答!
在某QQ群里,别人发的一道题,说是入门级问题,汗。。。求高手解答~

假设3个由用户任意输入的整数:A,B,C,范围是 1 < C < B < A < 1.7*10^308 .
求1~A中一共有多少个数,既不能被B整除,又不能被C整除?
测试数据:
第一组:A=2000; B=8; C=6;
第二组:A=89,0000,0000; B=200; C=30;
第三组:A=9273,2556,5238,4125; B=20255; C=1248;
第四组:A=1259,6236,3124,8000,0000,0000,0000,0000; B=15; C=7;
第五组:A=1259,6236,3124,8000,0000,0000,0000,0000; B=1524,6232,7867,5857; C=4,2527,7233,7697;

例子:
假如A = 7, B = 6, C = 3

1,不可以被B整除,不可以被C整除 +1
2,不可以被B整除,不可以被C整除 +1
3,不可以被B整除,可以被C整除
4,不可以被B整除,不可以被C整除 +1
5,不可以被B整除,不可以被C整除 +1
6,可以被B整除,可以被C整除
7,不可以被B整除,不可以被C整除 +1

所以一共有5个数


[解决办法]
<?php
/*
假设3个由用户任意输入的整数:A,B,C,范围是 1 < C < B < A < 1.7*10^308 .
求A中一共有多少个数,既不能被B整除,又不能被C整除?
测试数据:
第一组:A=2000; B=8; C=6;
第二组:A=89,0000,0000; B=200; C=30;
第三组:A=9273,2556,5238,4125; B=20255; C=1248;
第四组:A=1259,6236,3124,8000,0000,0000,0000,0000; B=15; C=7;
第五组:A=1259,6236,3124,8000,0000,0000,0000,0000; B=1524,6232,7867,5857; C=4,2527,7233,7697;
解法:概率求解--等可能概型
*/


function _countAll( $_a, $_b, $_all ){
$_i = 0;
$_count = 0;
for( $_i=1; $_i<=$_all; $_i++ ){
if( ( $_i % $_a ) && ( $_i % $_b ) ){
$_count++;
}
}
return $_count;
}

function _PAll( $_a, $_b, $_all ){
$_PA = floor( $_all / $_a );
$_PB = floor( $_all / $_b );
$_PAB = floor( $_all / Math_LCM( $_a, $_b ) );
$_result = ( $_all - ( $_PA + $_PB - $_PAB ) );
return $_result;
}

function Math_GCD( $_X, $_Y ){
$_Z;
while( $_Y ){
$_Z = $_X % $_Y;
$_X = $_Y;
$_Y = $_Z;
}
return $_X;
}

function Math_LCM( $_X, $_Y ){
return ( $_X * $_Y / Math_GCD( $_X, $_Y ) );
}

function trace( $object ){
echo $object.'<br/>';
}

trace( _PAll( 2000, 8, 6 ) );
trace( _PAll( 8900000000, 200, 30 ) );
trace( _PAll( 9273255652384125, 20255, 1248 ) );
trace( _PAll( 12596236312480000000000000000000, 15, 7 ) );
trace( _PAll( 12596236312480000000000000000000, 1524623278675857, 4252772337697 ) );

?>

热点排行