问题 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. vuejs给组件绑定原生事件

    给组件绑定事件,该事件是自定义的事件 <div id='root'> <child @click='handleClick'></child> </div&g ...

  2. Laravel5 构造器高级查询条件写法

    <?php #DB 高级查询 // select * from table where A and B or C $all_data = DB::table("shopnc_goods ...

  3. ios各层

    数据持久层.业务逻辑层.表示层 数据持久层: 持久化(Persistence)意思就是当你退出app的时候它还会存在. dao层:DAO (Data Access Object) 数据访问对象是一个面 ...

  4. 探索性数据分析EDA综述

    目录 1. 数据探索的步骤和准备 2. 缺失值处理 为什么需要处理缺失值 Why data has missing values? 缺失值处理的技术 3. 异常值检测和处理 What is an ou ...

  5. 【翻译】Emmet(Zen Coding)官方文档 之六 自定义 Emmet

    [说明]本系列博文是依据 Emmet 官方文档翻译的,原文地址为:http://docs.emmet.io/,部分内容已经在博主之前的博文中节选过,为方便已经收藏过之前博文的朋友,没有删除这些博文,仅 ...

  6. @NotEmpty、@NotNull、@NotBlank 的区别

    @NotEmpty 用在集合上面(不能注释枚举) @NotBlank用在String上面 @NotNull用在所有类型上面 1. @NotEmpty Asserts that the annotate ...

  7. java基础必备单词讲解 day two

    variable 变量 count 统计 sum 总数 salary 薪水 Scanner 接收 import 导入 eclipse 日食 control 控制 shift 改变 alt 替换键 ha ...

  8. 爬虫学习(十五)——json解析

    json与jsonpath 对象{}:jsonobject 对象:对象在js中表现为{}括起来的内容,数据结构为{key:value,key:value...}键值对的结构,在面向对象的结构中,key ...

  9. 【转载】C++中的static关键字的总结

    本文前半部分转自:博主chao_yu 本文后半部分转自:博主VincentCZW 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值. 静态变量或静态 ...

  10. 【转载】CString,string,char*之间的转换

    本文转自 <> 这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差.string是使用STL时必不可少的类型,所以是做工程时必须熟练掌 ...