水仙花数

题目描述:
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。

输入
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

输出
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。

样例输入
100 120 300 380

样例输出
no 370 371

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
echo "Please Input\n";
$in = '';
while($in != "\n"){
$first = false;
// $stdin = fopen("php://stdin",'r');
// $in = fgets($stdin);
$in = fgets(STDIN);//使用标准输入
$args[] = explode(' ',trim($in));
}
// fclose($stdin);
array_pop($args);
foreach ($args as $item) {
if($item[0] <100 || $item[1]>999 || $item[0]>=$item[1]) {
echo "输入参数不合法!\n";
exit(0);
}
$start = $item[0];
$end = $item[1];
$res = array();
while($start <= $end){
$a = floor($start/100);
$b = floor(($start-$a*100)/10);
$c = $start%10;
if($start == ($a*$a*$a+$b*$b*$b+$c*$c*$c)){
$res[] = $start;
}
$start += 1;
}
echo empty($res)?"No\n":implode(' ',$res)."\n";
}
?>

第二题:

求数列的和

题目描述:数列的定义如下: 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

输入
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
输出
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

样例输入
81 4 2 2

样例输出
94.73 3.41

之前为了赶火车,现在到宿舍整理好了重新写了下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
echo 'Please Input 2 Intger:';
$in = ' ';
while($in != "\n"){
$first = false;
$stdin = fopen("php://stdin",'r');
$in = fgets($stdin);
$args[] = explode(' ',trim($in));
}
fclose($stdin);
array_pop($args);
foreach($args as $item){
$n = $item[0];
$m = $item[1];
if($n >=10000 || $m >= 1000){
echo 'Input error!';
exit(0);
}
$sum = 0;
$pre = $n;
while($m>=1){
$sum += $pre;
$pre = round(sqrt($pre),2);
$m--;
}
echo $sum."\n";
}

?>

整个思路很简单,所以这里的代码就[an]没有注释[/an]