猴子选大王

一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

    private function monkey($n, $m) {
        $monkeys = range(1, $n);
        $i = 0;

        while (count($monkeys) > 1) {
            if (($i + 1) % $m == 0) {
                unset($monkeys[$i]);    // 如果是第 m 个,则踢出去
            } else {
                array_push($monkeys, $monkeys[$i]); // 如果不是第 m 个,则把这个插入数组尾部
                unset($monkeys[$i]);
            }

            $i++;
        }

        return current($monkeys);
    }

遍历文件夹

	/**
	 * 遍历文件夹
	 *
	 * @param $dir
	 * @return array
	 */
	public function my_dir($dir) {
		$files = array();
		if (@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)
			while (($file = readdir($handle)) !== false) {
				if ($file != ".." && $file != ".") { //排除根目录;
					if (is_dir($dir . "/" . $file)) { //如果是子文件夹,就进行递归
						$files[$file] = $this->my_dir($dir . "/" . $file);
					} else { //不然就将文件的名字存入数组;
						$files[] = $file;
					}
				}
			}
			closedir($handle);
			return $files;
		}
	}

杨辉三角

斐波那契数列,兔子繁殖

    private function tuzi($n) {
        $arr = [1, 1];
        if ($n < 2) {
            return $arr;
        }

        for ($i = 2; $i <= $n + 1; $i++) {
            $arr[$i] = $arr[$i - 1] + $arr[$i - 2];
        }

        return $arr;
    }

水仙花数

水仙花数:是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

    private function shuixianhua() {
        $arr = [];
        for ($i = 100; $i < 1000; $i++) {
            $hundreds = floor($i / 100);//分解出百位
            $tens = floor($i / 10) % 10;//分解出十位
            $ones = floor($i % 10);//分解出个位

            if (pow($hundreds, 3) + pow($tens, 3) + pow($ones, 3) == $i) {
                $arr[] = $i;
            }
        }

        return $arr;
    }

PHP奇异算法

PHP7以下的版本返回的是 6,PHP7版本返回5

<?php
function test(){
 $a=1;
 $b=&$a;
 echo (++$a)+(++$a);
}
test();

字符集合

输入一个字符串,求出该字符串包含的字符集合,并按顺序排序(英文)

多进程同时写文件

无限级分类

16

现在有一个字符串,你要对这个字符串进行 n 次操作,每次操作给出两个数字:(p, l) 表示当前字符串中从下标为 p 的字符开始的长度为 l 的一个子串。你要将这个子串左右翻转后插在这个子串原来位置的正后方,求最后得到的字符串是什么。字符串的下标是从 0 开始的,你可以从样例中得到更多信息。

每组测试用例仅包含一组数据,每组数据第一行为原字符串,长度不超过 10 ,仅包含大小写字符与数字。接下来会有一个数字 n 表示有 n 个操作,再接下来有 n 行,每行两个整数,表示每次操作的(p , l)。

保证输入的操作一定合法,最后得到的字符串长度不超过 1000。

17

你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 n 首歌而且每首歌的长度都是 s 秒,每首歌必须完整地收录于一张 CD 当中。每张 CD 的容量长度都是 L 秒,而且你至少得保证同一张 CD 内相邻两首歌中间至少要隔 1 秒。为了辟邪,你决定任意一张 CD 内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?

每组测试用例仅包含一组数据,每组数据第一行为三个正整数 n, s, L。 保证 n ≤ 100 , s ≤ L ≤ 10000

获取上个月第一天 和 最后一天

随机输入一个数字能查询到对应的数据区间

用PHP实现一个双向队列

洗牌算法

输出101-200之间的所有素数

输入某年某月某日,判断这一天是这一年的第几天?

算年龄

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

回文数

回文数,个位与万位相同,十位与千位相同,例如:12321是回文数。

参考链接 https://www.cnblogs.com/clubs/p/10373814.html