问题 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. 第28章 LTDC—液晶显示中英文—零死角玩转STM32-F429系列

    第28章     LTDC—液晶显示中英文 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  2. ztree3.5中checkbox无法取消选中的问题解决

    使用jquery的tree插件ztree,用到复选框的功能 var setting = { check: { enable: true }, data: { simpleData: { enable: ...

  3. C# 复合赋值操作符

    前面讲过如何使用算术操作符来创建新值.例如,以下语句使用操作符+来创建比变量answer大42的一个值,新值将写入控制台: Console.WriteLine(answer + 42); 前面还讲过如 ...

  4. java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流

    package com.swift.baseKnowledge; import java.io.File; import java.io.FileInputStream; import java.io ...

  5. BZOJ1046: [HAOI2007]上升序列(LIS)

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5740  Solved: 2025[Submit][Status][Discuss] Descript ...

  6. ethereum(以太坊)(十二)--应用(一)__集资(构造函数/映射)

    pragma solidity ^0.4.4; contract funder{ //0xca35b7d915458ef540ade6068dfe2f44e8fa733c //0x14723a09ac ...

  7. tcl之控制流-while

  8. 【PHP】nl2br转化输出input框的换行

    在input或者textarea框中输入的换行符保存到数据库是/n,如果直接输出到前端的话是不会有换行的,所以要用到nl2br转化 nl2br($test);

  9. 图像压缩函数imagecopyresampled

    <?php //制作缩略图.图像压缩 //参数1:目的地图像资源(通常指的是画布资源) $dst_image = imagecreatetruecolor(100, 100); $color = ...

  10. zookeeper集群(二)

    经过前一篇文章<zookeeper伪集群一>的阅读,相信大家对zookeeper集群已经有一定的了解了,接下来我们再谈谈zookeeper真集群.其实真集群和伪集群还是有很多相似的部分的, ...