PHP亲密接触

Codeforces :http://codeforces.com/problemset/problem/1/A

按照老规矩先上这份代码

<?php
/**
 * Created by IntelliJ IDEA.
 * User: 低调的程序员
 * Date: 2015/4/25
 * Time: 1:17
 */

function out($arr,$iter,$ob,$up){
    if(!isset($arr[$iter])){
        if($up>0){
            fprintf(STDOUT,"%d",$up);
            return true;
        }
        return false;
    }
    $arr[$iter]+=$up;
    $up=floor($arr[$iter]/$ob);
    $arr[$iter]=$arr[$iter]%$ob;
    $ret=out($arr,$iter+1,$ob,$up);
    if($ret || $arr[$iter]>0){
        fprintf(STDOUT,"%d",$arr[$iter]);
        return true;
    }
    return false;
}

function muti($muti_1,$muti_2){
    $ob=10;
    //数字转换为数组(1000进制)
    $arr_1 = array();
    while(floor($muti_1/$ob)>0){
        $arr_1[]=$muti_1%$ob;
        $muti_1=floor($muti_1/$ob);
    }
    $arr_1[]=$muti_1;
    //数字转换为数组
    $arr_2 = array();
    while(floor($muti_2/$ob)>0){
        $arr_2[]=$muti_2%$ob;
        $muti_2=floor($muti_2/$ob);
    }
    $arr_2[]=$muti_2;

    $len_1 = count($arr_1);
    $len_2 = count($arr_2);

    $result=array();

    for($iter_i=0;$iter_i<$len_1;$iter_i++){
        for($iter_j=0;$iter_j<$len_2;$iter_j++){
            isset($result[$iter_i+$iter_j])?
                $result[$iter_i+$iter_j]+=$arr_1[$iter_i]*$arr_2[$iter_j]:
                $result[$iter_i+$iter_j]=$arr_1[$iter_i]*$arr_2[$iter_j];
        }
    }

    out($result,0,$ob,0);
    fprintf(STDOUT,"\n");
}


while(fscanf(STDIN,"%d%d%d",$n,$m,$a)){
    muti(floor(($m+$a-1)/$a),floor(($n+$a-1)/$a));

//    fprintf(STDOUT,"%d\n",floor(($m+$a-1)/$a)*floor(($n+$a-1)/$a));
}


很久没有刷题了,今天用PHP刷了一个水题。。。。

用其他语言,比如C,JAVA等,只需几行即可实现,但PHP不支持64位整数运算,没办法了,自己实现了一个大数运算。

今天遇到的问题:

1.想把整数转换数组用函数来封装,可是没有封装成功,知情的人士可能呵呵,不知情的,自己查查了。。。

2.除法运算,输入6 6 4 ,注释的代码答案是5,呵呵。。


总的来说,还是喜欢第一次和PHP亲密接触。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值