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亲密接触。。。