P1553 数字反转(升级版)

直通

思路:

  首先使用char数组进行读入,然后直接按照题目要求进行反转即可,

  但要注意的是对零的处理:(有点类似于高精去除前导零)

    ①去除只是整数、百分数的时候,反转后的前导零

    ②去除反转后'.','/'前半部分的前导零

    ③去除反转后'.'后半部分的后缀零

    ④去除反转后'/'后半部分的前导零

      注:我的代码中因为'/'后半部分是用逆序输出的,所以删除的是后缀零

上代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; int s,z,flag=;
char a[],tmp[],tmp2[]; int main() {
cin>>a;
int len=strlen(a);
if(a[len-]=='%') flag=,len--;
else {
for(int i=; i<len; i++) {
if(a[i]=='.' || a[i]=='/') {
for(int j=; j<i; j++) tmp[j]=a[i-j-];
for(int j=; j<i; j++) a[j]=tmp[j];
while(a[s]=='' && s+<i) s++; //前导零
if(a[i]=='.') flag=;
if(a[i]=='/') flag=;
z=i+;
break;
}
}
}
if(flag== || flag==) {
for(int i=; i<len; i++) tmp[i]=a[len-i-];
for(int i=; i<len; i++) a[i]=tmp[i];
while(a[s]=='' && s+<len) s++; //前导零
if(flag==) len++;
} else if(flag==) {
for(int i=z; i<len; i++) tmp2[i]=a[len-i-+z];
for(int i=z; i<len; i++) a[i]=tmp2[i];
while(a[len-]=='' && len->=z) len--; //后半部分的后缀零
} else if(flag==) {
int top=;
for(int i=s; i<z; i++) printf("%c",a[i]);
for(int i=z; i<len; i++) tmp2[top++]=a[i];
while(tmp2[top-]=='' && top->=) top--; //后半部分的前导零
for(int i=top-; i>=; i--) printf("%c",tmp2[i]);
return ;
}
for(int i=s; i<len; i++) printf("%c",a[i]);
return ;
}

luogu P1553 数字反转(升级版)的更多相关文章

  1. 洛谷P1553数字反转升级版

    题目链接:https://www.luogu.org/problemnew/show/P1553

  2. 洛谷 P1553 数字反转(升级版)【字符串+STL stack】

    P1553 数字反转(升级版) 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调 ...

  3. 洛谷 P1553 数字反转(升级版)

    P1553 数字反转(升级版) 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调 ...

  4. 字符串--P1553 数字反转(升级版)

    题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转, ...

  5. P1553 数字反转(升级版)

    题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转, ...

  6. P1553 数字反转(升级版)(copy(),reverse(),find(),substr(),erase())

    题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反 ...

  7. (Java实现) 洛谷 P1553 数字反转(升级版)

    题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转, ...

  8. 洛谷P1553 数字反转(升级版)

    题目简介 题目描述       给定一个数,请将该数各个位上数字反转得到一个新数.       这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对 ...

  9. luogu P1307 数字反转 x

    题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 输入 ...

随机推荐

  1. 使用Duilib开发Windows软件(5)——使用VLC做视频播放

    需求:调用PC上的摄像头拍照. 实现思路:接入视频流,截屏获取照片. 早期的vlc安装包(Windows)是附带sdk包的,现在的安装后已经没有了,原因如下: VLC SDK下载连接:https:// ...

  2. oracle 数据库 主键索引重建

    oracle 数据库 主键索引重建 alter table table_name drop primary key; alter table table_name add constraint pk_ ...

  3. css 动画(一)transform 变形

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 有段时间我是没理清 transform.translate.transition 和 animation之 ...

  4. dockerfile相关命令

    官方dockerfile:https://github.com/play-with-docker/play-with-docker 可以根据一直的镜像,学习dockerfile的编写 dockerfi ...

  5. 【Transact-SQL】计算整个表中所有值的出现的次数

    原文:[Transact-SQL]计算整个表中所有值的出现的次数 一个表有3列,5行,那么一共有15个值,现在要计算整个表中所有值在表中出现的次数,不过这里表的列数是不确定的,上面的例子是3列,实际上 ...

  6. C#如何调用C++(进阶篇)

    上一篇文章最后,提出的一个问题:如果一个c++库中有很多方法,需要一个个声明??这样岂不是要写很多代码??,而且没有智能提示看到提供了那些方法. 如下图: 如果有朋友需要用这种方式调用,而又不知道怎么 ...

  7. 日语单词N3_N4_N5

    单 词 讲 解 あ行单词 ああ:0[副]那样.那种 例句:ああ言うことはしないほうがいい.那样的事情最好不做. 電車の窓からごみを棄てているああ言うことはしないほうがいい. 挨拶(あいさつ):① 寒暄 ...

  8. js获取URL请求参数与改变src

    js实现: <script> function GetQueryString(name) { var reg = new RegExp("(^|&)" + na ...

  9. iOS有哪些数据类型/基本数据类型?

    简述 本文主要探究使用OC作为iOS开发语言时,我们能使用哪些数据类型. 一切类型始于C. C语言的类型 基本数据类型: 基本数据类型(fundamental data types)也叫原始数据类型( ...

  10. spring data 入门

    提出问题 我是Sping Data,是程序员的春天,因为我提供很多接口给开发人员, 减少程序员重复的写CRUD和分页等方法,你们也可以叫我春D,或者春帝,因为我很酷 解决问题 在Spring Data ...