赞
踩
1,现在有一个字符串,你要对这个字符串进行 n 次操作,每次操作给出两个数字:(p, l) 表示当前字符串中从下标为 p 的字符开始的长度为 l 的一个子串。你要将这个子串左右翻转后插在这个子串原来位置的正后方,求最后得到的字符串是什么。字符串的下标是从 0 开始的,你可以从样例中得到更多信息。
每组测试用例仅包含一组数据,每组数据第一行为原字符串,长度不超过 10 ,仅包含大小写字符与数字。接下来会有一个数字 n 表示有 n 个操作,再接下来有 n 行,每行两个整数,表示每次操作的(p , l)。
保证输入的操作一定合法,最后得到的字符串长度不超过 1000。
- <?php
-
- class GetNewString {
-
- private $str;
-
- private $strl_len;
-
- private $str_limit_start;
-
- private $str_limit_end;
-
- public function __construct($str, $str_limit_start = 10, $str_limit_end = 1000) {
- $this->str = $str;
- $this->strl_len = (int)strlen($str);
- $this->str_limit_start = $str_limit_start;
- $this->str_limit_end = $str_limit_end;
- if($this->strl_len > 10) {
- $this->showErrorMessge("字符串长度不能大于 " . $str_limit_start);
- }
- }
-
- public function run($limits) {
- foreach ($limits as $key => $value) {
- $this->operation((int)$value[0], (int)$value[1]);
- }
- return $this->str;
- }
-
- public function operation($start, $len) {
- if(($len + $this->strl_len) > $this->str_limit_end) {
- $this->showErrorMessge("字符串长度不能大于 " . $str_limit_end);
- }
- if(($start + $len) > $this->strl_len) {
- $this->showErrorMessge("参数错误");
- }
- $str = strrev(substr($this->str, $start, $len));
- $this->str = substr($this->str, 0, $start + $len) . $str . substr($this->str, $start + $len);
- }
-
-
- protected function showErrorMessge($msg) {
- echo $msg . "\n";
- exit();
- }
- }
-
- $handle = fopen("php://stdin", "r");
-
- $str = fgets($handle);
-
- $times = fgets($handle);
-
- $sub_arr = array();
-
- for($i = 0; $i < $times; $i++){
-
- $temp = fgets($handle);
-
- $sub_arr[] =explode(" ", $temp);
- }
-
- $a = new GetNewString($str);
- $res = $a->run($sub_arr);
-
- echo $res . "\n";
-
- fclose($handle);
2,你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 n 首歌而且每首歌的长度都是 s 秒,每首歌必须完整地收录于一张 CD 当中。每张 CD 的容量长度都是 L 秒,而且你至少得保证同一张 CD 内相邻两首歌中间至少要隔 1 秒。为了辟邪,你决定任意一张 CD 内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?
每组测试用例仅包含一组数据,每组数据第一行为三个正整数 n, s, L。 保证 n ≤ 100 , s ≤ L ≤ 10000
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。