-->

PHP资讯

您的当前位置:首页 > 资讯 > PHP基础

PHP经典算法(六)

2019-12-18 09:32:03  来源:admin 点击:740

【程序6】题目:一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?   

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:   


刚开始不知道怎么判断一个数字是否为完全平方数,但是根据php的基本函数sqrt和pow可以间接进行判断


若开方后进行取整再平方等于原数字,那么这个数字则为一个完全平方数,根据这个方法进行判断


public function actionWhitchNum()
{
    for ($i=1;$i<=100000;$i++)
    {
        if(pow((int)sqrt($i+100),2) == ($i+100) &&pow((int)sqrt($i+168),2) == ($i+168) )
        {
            echo $i;
        }
    }
    echo 'ok';
}



【程序7】 题目:输入某年某月某日,判断这一天是这一年的第几天?   

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。   刚开始看这题以为有什么简单的方法,但是我没有想到,没有办法,只能用这种方法了


public function actionToday()
{
    $today = '2018-03-05'// 格式固定
    $days = explode('-',$today);
    $year = $days[0];
    $month = (int)$days[1];
    $day = (int)$days[2];

    // 判断是否为闰年
    $flag = false;
    if($year%400==0||($year%4==0&&$year%100!=0))
    {
        $flag = true;
    }

    // 对月份进行判断 1,3,5,7,8,10,12 为31天
    // 4,6,9,11 为30天
    // 2月份闰年为29天,否则为28天
    switch ($month)
    {
        case 1:
            $sum = 0;break;
        case 2:
            $sum = 31;break;
        case 3:
            $sum = 59;break;
        case 4:
            $sum=90;break;
        case 5:
            $sum=120;break;
        case 6:
            $sum=151;break;
        case 7:
            $sum=181;break;
        case 8:
            $sum=212;break;
        case 9:
            $sum=243;break;
        case 10:
            $sum=273;break;
        case 11:
            $sum=304;break;
        case 12:
            $sum=334;break;
        default:
            break;
    }

    $sum = $sum + $day;
    if($flag && $month>2)
        $sum = $sum + 1;

    var_dump($sum);

}


相关文章更多 >

© 2024版权所有 水水网

电话:171780793