问题 C: Py Road

时间限制: 1 Sec  内存限制: 128 MB
提交: 125  解决: 34
[提交][状态][讨论版]

题目描述

Life is short,you need Python!

听说python是一门神奇的语言,所以zzx毅然决然地走上了学习python的道路。

我们都知道 在C语言中,数组的下标是从0开始,从左到右,python也支持这种方式。

但是python还有另外一种表示方法,下标可以为负,从右到左,最后一个元素从-1开始,然后前面元素的下标依次减小,如下图所示:

下标用来访问单个元素,python还支持切片操作,切片是指通过指定下标范围和步长来获得子数组。

假定数组为S,切片用法如下:

S[start:end:step]表示取S中从start索引的位置起到end索引的位置,不包含end索引本身,每隔|step|-1个字符(||为绝对值),取一个字符。

假定数组长度为len。

若step > 0 表示上述操作从左至右进行

       若start < -len  start = - len

       若end > len end = len

若step < 0 表示上述操作从右至左进行

       若start >= len start = len - 1

       若end < -len-1 end = -len - 1

如果S为”python”(字符串也是数组),S[0:4:1]表示的含义就是从下标0开始每取一个字符,下标+1接着取,当下标大于等于4的时候不能再取字符,所以得到的结果就是”pyth”,由于负下标的存在,你会发现[-6:4:1]、[-6:-2:1]、[0:-2:1]得到的结果同样是”pyth”

更多例子

[0:4:2] = “pt”       [4:4:1] = “ ”(空)         [-10:2:1]= “py”     [3:10:1]= “hon”

[4:0:-1] = “ohty ”     [-2:0:1] = “”(空)        [4:0:-2] = “ot”      [-2:0:-1]= “ohty ”

[-10:10:1]= “python”  [10:-10:-1]= “nohtyp”

现在给出字符串和切片,请你把得到的结果告诉zzx。

输入

首先是整数T (T<=50) 代表测试数据组数。

对于每组测试数据:

第一行是一个字符串S(只包含数字,大小写字母,长度不超过100);

第二行是一个整数Q(Q < 50),代表查询次数;

接下来是Q行输入查询参数, 格式为 [start:end:step] , start,end,step都为整数且step不为0,保证所有出现的整数不超过C语言的int范围。

输出

对于每个查询输出一行,即python的S[start:end:step],如果查询结果为空,输出“#”.

样例输入

  1. 2
  2. python
  3. 5
  4. [0:4:1]
  5. [-6:-2:1]
  6. [-2:0:-1]
  7. [10:-10:-2]
  8. [4:0:-2]
  9. WelcomeToHnustAcm117
  10. 3
  11. [-1:-2:1]
  12. [-2:-1:1]
  13. [0:-6:1]
  1. #include <cstdio>
  2. #include <cstring>
  3. int absa(int a)
  4. {
  5. return a>?a:-a;
  6. }
  7. int main()
  8. {
  9. char s[];
  10. int t,n,sta,staa,en,enn,ste,i,bi,o,flag;
  11. scanf("%d",&t);
  12. while(t--)
  13. {
  14. scanf("%s %d",s,&n);
  15. for(o=;o<n;o++)
  16. {
  17. int l=strlen(s);
  18. getchar();
  19. scanf("%*c%d:%d:%d%*c",&sta,&en,&ste);
  20. bi=absa(ste);
  21. flag=;
  22. if(ste>)
  23. {
  24. if(sta>=l||sta==-||en==||en<=-l)
  25. {
  26. printf("#\n");
  27. continue;
  28. }
  29. if(absa(sta)>=l) staa=;
  30. else if(sta<) staa=l+sta;
  31. else staa=sta;
  32. if(absa(en)>l) enn=l;
  33. else if(en<) enn=l+en;
  34. else enn=en;
  35. for(i=staa;i<enn;i+=bi)
  36. {
  37. printf("%c",s[i]);
  38. flag=;
  39. }
  40. if(!flag) printf("#");
  41. printf("\n");
  42. }
  43. else
  44. {
  45. if(sta==||sta<=-l||en==-||en>=l)
  46. {
  47. printf("#\n");
  48. continue;
  49. }
  50. if(absa(sta)>=l) enn=l-;
  51. else if(sta<) enn=l+sta;
  52. else enn=sta;
  53. if(absa(en)>l) staa=-;
  54. else if(en<) staa=l+en;
  55. else staa=en;
  56. for(i=enn;i>staa;i-=bi)
  57. {
  58. printf("%c",s[i]);
  59. flag=;
  60. }
  61. if(!flag) printf("#");
  62. printf("\n");
  63. }
  64.  
  65. }
  66. }
  67. return ;
  68. }

样例输出

  1. pyth
  2. pyth
  3. ohty
  4. nhy
  5. ot
  6. #
  7. 1
  8. WelcomeToHnust
  9.  
  10. 将输入的下标转化成下标。再按-11来确定先后就基本没啥问题了。

hnust py road的更多相关文章

  1. HDOJ 5402 Travelling Salesman Problem 模拟

    行数或列数为奇数就能够所有走完. 行数和列数都是偶数,能够选择空出一个(x+y)为奇数的点. 假设要空出一个(x+y)为偶数的点,则必须空出其它(x+y)为奇数的点 Travelling Salesm ...

  2. 图论trainning-part-1 H. Qin Shi Huang's National Road System

    H. Qin Shi Huang's National Road System Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO f ...

  3. 【23.15%】【codeforces 703C】Chris and Road

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  4. [Docker01] The Docker Road

    The Docker Road Docker是什么? Docker是docker容器为资源分隔和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建,发布和运行分布式应用的平台 ...

  5. python调用py中rar的路径问题。

    1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...

  6. Python导入其他文件中的.py文件 即模块

    import sys sys.path.append("路径") import .py文件

  7. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  8. import renumber.py in pymol

    cp renumber.py /usr/local/lib/python2.7/dist-packages/pymol import renumber or run /path/to/renumber ...

  9. POJ 3204 Ikki's Story I - Road Reconstruction

    Ikki's Story I - Road Reconstruction Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 7 ...

随机推荐

  1. Token的概念

    转载自:https://ninghao.net/blog/2834 最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+, ...

  2. P2096 最佳旅游线路

    最大字段和加贪心 算长了个见识吧 #include<iostream> #include<cstdio> #include<algorithm> using nam ...

  3. hbase的coprocessor使用(转)

    http://www.360doc.com/content/13/0320/09/4675893_272623864.shtml

  4. cudpp库的编译和使用

    项目主页 http://cudpp.github.io/ 根据这个网址的提示进行 https://github.com/cudpp/cudpp/wiki/BuildingCUDPPwithCMake ...

  5. winfrom中上传文件保存在webFrom里面

    winfrom里面的代码 private void button1_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(text ...

  6. 4.Spring Cloud初相识--------Feign负载均衡

    前言: 在上一节里,我们学习了ribbon的使用. 我们了解到ribbon是一个客户端负载均衡机制. 而我们今天要讲的Feign呢,也是一款客户端负载均衡机制. 或者这样说,Feign封装了ribbo ...

  7. SpringBoot学习10:springboot整合mybatis

    需求:通过使用 SpringBoot+SpringMVC+MyBatis 整合实现一个对数据库中的 t_user 表的 CRUD 的操作 1.创建maven项目,添加项目所需依赖 <!--spr ...

  8. vim指令,快捷键汇总

    Vim 命令.操作.快捷键全集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vi ...

  9. (转)零基础学习 Hadoop 该如何下手?

    推荐一些Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Amb ...

  10. dategrip破解

    https://blog.csdn.net/weixin_39428938/article/details/81078806