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 ...
随机推荐
- 引用类型(二):Array类型
一.js中的数组与其它语言中的数组的区别1.ECMAScript数组的每一项可以保存任何类型的数据2.ECMAScript数组的大小是可以动态调整的 二.创建数组的基本方式1.使用Array构造函数 ...
- 【转】android gravity属性 和 weight属性
有点忘记这两个属性了,复习一下. 来看这个布局文件 <?xml version="1.0" encoding="utf-8"?> <Linea ...
- macOS Sierra系统偏好设置->安全性和隐私->通用中的“任何来源” 选项开与关
显示"任何来源"选项在控制台中执行: sudo spctl --master-disable 不显示"任何来源"选项(macOS 10.12默认为不显示)在控制 ...
- 【Java】数组知识回顾
package another; import java.util.Arrays; import java.util.List; /** * 数组知识回顾 * @author ChristineBas ...
- Anaconda下安装 TensorFlow 和 keras 以及连接pycharm
首先在官网下载Anaconda https://www.anaconda.com/download/ 安装时注意 勾选第一个,增加环境变量 安装好后再windows界面打开Anaconda Promp ...
- django+xadmin在线教育平台(十二)
6-4 用form实现登录-1 上面我们的用户登录的方法是基于函数来做的.本节我们做一个基于类方法的版本. 要求对类的继承有了解. 基础教程中基本上都是基于函数来做的,其实更推荐基于类来做.基于类可以 ...
- (三)Swagger配置多项目共用
重构了多个项目后,在联调接口时,查看api会发现Swagger在几个项目可用,有几个不可用,配置都一样,扫描也充分,那问题出在哪里呢?先仔细找了下Docket的源码,发现有这么个方法: /** * P ...
- 列表,元组的操作,for循环
1.列表 # li = ["wang","jian","wei"] # print(li) # 结果:['wang', 'jian', 'w ...
- 谷歌浏览器如何调试JS
平常在开发过程中,经常会接触到前端页面.那么对于js的调试那可是家常便饭,谷歌浏览器是常用来调试JS代码的工具,本文主要介绍如何利用谷歌浏览器来调试JS代码,协助我们进行开发工作,加快开发效率. 1. ...
- Redis ----------String的操作
set key value 设置key对应的值为String类型的value mset key value 一次设置多个 key对应的值 mget key value 一 ...