hnust py road
问题 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的更多相关文章
- HDOJ 5402 Travelling Salesman Problem 模拟
行数或列数为奇数就能够所有走完. 行数和列数都是偶数,能够选择空出一个(x+y)为奇数的点. 假设要空出一个(x+y)为偶数的点,则必须空出其它(x+y)为奇数的点 Travelling Salesm ...
- 图论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 ...
- 【23.15%】【codeforces 703C】Chris and Road
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- [Docker01] The Docker Road
The Docker Road Docker是什么? Docker是docker容器为资源分隔和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建,发布和运行分布式应用的平台 ...
- python调用py中rar的路径问题。
1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...
- Python导入其他文件中的.py文件 即模块
import sys sys.path.append("路径") import .py文件
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- import renumber.py in pymol
cp renumber.py /usr/local/lib/python2.7/dist-packages/pymol import renumber or run /path/to/renumber ...
- POJ 3204 Ikki's Story I - Road Reconstruction
Ikki's Story I - Road Reconstruction Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 7 ...
随机推荐
- vuejs给组件绑定原生事件
给组件绑定事件,该事件是自定义的事件 <div id='root'> <child @click='handleClick'></child> </div&g ...
- Laravel5 构造器高级查询条件写法
<?php #DB 高级查询 // select * from table where A and B or C $all_data = DB::table("shopnc_goods ...
- ios各层
数据持久层.业务逻辑层.表示层 数据持久层: 持久化(Persistence)意思就是当你退出app的时候它还会存在. dao层:DAO (Data Access Object) 数据访问对象是一个面 ...
- 探索性数据分析EDA综述
目录 1. 数据探索的步骤和准备 2. 缺失值处理 为什么需要处理缺失值 Why data has missing values? 缺失值处理的技术 3. 异常值检测和处理 What is an ou ...
- 【翻译】Emmet(Zen Coding)官方文档 之六 自定义 Emmet
[说明]本系列博文是依据 Emmet 官方文档翻译的,原文地址为:http://docs.emmet.io/,部分内容已经在博主之前的博文中节选过,为方便已经收藏过之前博文的朋友,没有删除这些博文,仅 ...
- @NotEmpty、@NotNull、@NotBlank 的区别
@NotEmpty 用在集合上面(不能注释枚举) @NotBlank用在String上面 @NotNull用在所有类型上面 1. @NotEmpty Asserts that the annotate ...
- java基础必备单词讲解 day two
variable 变量 count 统计 sum 总数 salary 薪水 Scanner 接收 import 导入 eclipse 日食 control 控制 shift 改变 alt 替换键 ha ...
- 爬虫学习(十五)——json解析
json与jsonpath 对象{}:jsonobject 对象:对象在js中表现为{}括起来的内容,数据结构为{key:value,key:value...}键值对的结构,在面向对象的结构中,key ...
- 【转载】C++中的static关键字的总结
本文前半部分转自:博主chao_yu 本文后半部分转自:博主VincentCZW 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值. 静态变量或静态 ...
- 【转载】CString,string,char*之间的转换
本文转自 <> 这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差.string是使用STL时必不可少的类型,所以是做工程时必须熟练掌 ...