问题 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],如果查询结果为空,输出“#”.

样例输入

2
python
5
[0:4:1]
[-6:-2:1]
[-2:0:-1]
[10:-10:-2]
[4:0:-2]
WelcomeToHnustAcm117
3
[-1:-2:1]
[-2:-1:1]
[0:-6:1]
#include <cstdio>
#include <cstring>
int absa(int a)
{
return a>?a:-a;
}
int main()
{
char s[];
int t,n,sta,staa,en,enn,ste,i,bi,o,flag;
scanf("%d",&t);
while(t--)
{
scanf("%s %d",s,&n);
for(o=;o<n;o++)
{
int l=strlen(s);
getchar();
scanf("%*c%d:%d:%d%*c",&sta,&en,&ste);
bi=absa(ste);
flag=;
if(ste>)
{
if(sta>=l||sta==-||en==||en<=-l)
{
printf("#\n");
continue;
}
if(absa(sta)>=l) staa=;
else if(sta<) staa=l+sta;
else staa=sta;
if(absa(en)>l) enn=l;
else if(en<) enn=l+en;
else enn=en;
for(i=staa;i<enn;i+=bi)
{
printf("%c",s[i]);
flag=;
}
if(!flag) printf("#");
printf("\n");
}
else
{
if(sta==||sta<=-l||en==-||en>=l)
{
printf("#\n");
continue;
}
if(absa(sta)>=l) enn=l-;
else if(sta<) enn=l+sta;
else enn=sta;
if(absa(en)>l) staa=-;
else if(en<) staa=l+en;
else staa=en;
for(i=enn;i>staa;i-=bi)
{
printf("%c",s[i]);
flag=;
}
if(!flag) printf("#");
printf("\n");
} }
}
return ;
}

样例输出

pyth
pyth
ohty
nhy
ot
#
1
WelcomeToHnust 将输入的下标转化成下标。再按-1和1来确定先后就基本没啥问题了。

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. 引用类型(二):Array类型

    一.js中的数组与其它语言中的数组的区别1.ECMAScript数组的每一项可以保存任何类型的数据2.ECMAScript数组的大小是可以动态调整的 二.创建数组的基本方式1.使用Array构造函数 ...

  2. 【转】android gravity属性 和 weight属性

    有点忘记这两个属性了,复习一下. 来看这个布局文件 <?xml version="1.0" encoding="utf-8"?> <Linea ...

  3. macOS Sierra系统偏好设置->安全性和隐私->通用中的“任何来源” 选项开与关

    显示"任何来源"选项在控制台中执行: sudo spctl --master-disable 不显示"任何来源"选项(macOS 10.12默认为不显示)在控制 ...

  4. 【Java】数组知识回顾

    package another; import java.util.Arrays; import java.util.List; /** * 数组知识回顾 * @author ChristineBas ...

  5. Anaconda下安装 TensorFlow 和 keras 以及连接pycharm

    首先在官网下载Anaconda https://www.anaconda.com/download/ 安装时注意 勾选第一个,增加环境变量 安装好后再windows界面打开Anaconda Promp ...

  6. django+xadmin在线教育平台(十二)

    6-4 用form实现登录-1 上面我们的用户登录的方法是基于函数来做的.本节我们做一个基于类方法的版本. 要求对类的继承有了解. 基础教程中基本上都是基于函数来做的,其实更推荐基于类来做.基于类可以 ...

  7. (三)Swagger配置多项目共用

    重构了多个项目后,在联调接口时,查看api会发现Swagger在几个项目可用,有几个不可用,配置都一样,扫描也充分,那问题出在哪里呢?先仔细找了下Docket的源码,发现有这么个方法: /** * P ...

  8. 列表,元组的操作,for循环

    1.列表 # li = ["wang","jian","wei"] # print(li) # 结果:['wang', 'jian', 'w ...

  9. 谷歌浏览器如何调试JS

    平常在开发过程中,经常会接触到前端页面.那么对于js的调试那可是家常便饭,谷歌浏览器是常用来调试JS代码的工具,本文主要介绍如何利用谷歌浏览器来调试JS代码,协助我们进行开发工作,加快开发效率. 1. ...

  10. Redis ----------String的操作

    set    key   value 设置key对应的值为String类型的value mset    key   value 一次设置多个 key对应的值 mget    key   value 一 ...