当前位置:   article > 正文

撸题_撸试卷

撸试卷

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

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

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

  1. <?php
  2. class GetNewString {
  3. private $str;
  4. private $strl_len;
  5. private $str_limit_start;
  6. private $str_limit_end;
  7. public function __construct($str, $str_limit_start = 10, $str_limit_end = 1000) {
  8. $this->str = $str;
  9. $this->strl_len = (int)strlen($str);
  10. $this->str_limit_start = $str_limit_start;
  11. $this->str_limit_end = $str_limit_end;
  12. if($this->strl_len > 10) {
  13. $this->showErrorMessge("字符串长度不能大于 " . $str_limit_start);
  14. }
  15. }
  16. public function run($limits) {
  17. foreach ($limits as $key => $value) {
  18. $this->operation((int)$value[0], (int)$value[1]);
  19. }
  20. return $this->str;
  21. }
  22. public function operation($start, $len) {
  23. if(($len + $this->strl_len) > $this->str_limit_end) {
  24. $this->showErrorMessge("字符串长度不能大于 " . $str_limit_end);
  25. }
  26. if(($start + $len) > $this->strl_len) {
  27. $this->showErrorMessge("参数错误");
  28. }
  29. $str = strrev(substr($this->str, $start, $len));
  30. $this->str = substr($this->str, 0, $start + $len) . $str . substr($this->str, $start + $len);
  31. }
  32. protected function showErrorMessge($msg) {
  33. echo $msg . "\n";
  34. exit();
  35. }
  36. }
  37. $handle = fopen("php://stdin", "r");
  38. $str = fgets($handle);
  39. $times = fgets($handle);
  40. $sub_arr = array();
  41. for($i = 0; $i < $times; $i++){
  42. $temp = fgets($handle);
  43. $sub_arr[] =explode(" ", $temp);
  44. }
  45. $a = new GetNewString($str);
  46. $res = $a->run($sub_arr);
  47. echo $res . "\n";
  48. fclose($handle);

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/944800
推荐阅读
相关标签
  

闽ICP备14008679号