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软件(2)——控件的基本介绍

    XML 先学习xml https://www.w3cschool.cn/xml/xml-xml-tutorialhc4o1t5m.html 控件 上图是我们下载的NIM_Duilib_Framewor ...

  2. Core使用SAP Web Service

    .Net Core在使用SAP的Web Service会遭遇到一些错误,貌似目前并不支持SAP中的Web Service,我们需要曲线实现下调用过程: 经测试,不再需要Framework项目中转,Sy ...

  3. [ZJOI2007]捉迷藏 (线段树,括号序列)

    大意: 给定树, 要求维护一个点集, 支持删点添点, 询问点集直径. 本题做法比较多. 一个显然的做法是, 线段树维护区间直径, 然后根据点集直径的性质, 合并后直径端点一定是四个端点其中两个, 枚举 ...

  4. Apache2.4+Tomcat7.0+php5.5整合配置详解

    在上一篇的基础上,继续添加php的配置 一.首先下载php5.5 首先下载php5.5,到官网下载http://www.php.net/downloads.php,参考http://www.cnblo ...

  5. RESTful接口开发

    package com.aaaaaa.manager.controller; import org.springframework.beans.factory.annotation.Autowired ...

  6. [书籍翻译] 《JavaScript并发编程》第四章 使用Generators实现惰性计算

    本文是我翻译<JavaScript Concurrency>书籍的第四章 使用Generators实现惰性计算,该书主要以Promises.Generator.Web workers等技术 ...

  7. IDEA部署项目到远程服务器

    一.idea安装阿里插件Alibaba Cloud Toolkit 二.添加Host 三.应用部署 四.修改源程序重新部署 五.查看实时日志 欲买桂花同载酒,终不似,少年游

  8. OGG 自动重启脚本

    6-20 * * * /oggdata/log/oggautorestart.sh >/oggdata/log/crontab_oggautorestart.log 2>&1 [说 ...

  9. Flutter中的替换路由、返回到根路由

    替换路由 当我们有三个页面,页面1,页面2,页面3. 期望点击页面1按钮,跳转到页面2,页面2点击返回,跳转到页面1: 点击页面2按钮,跳转到页面3,页面3点击返回,跳转到页面1,而不是页面2. 这时 ...

  10. 《浏览器工作原理与实践》<08>调用栈:为什么JavaScript代码会出现栈溢出?

    在上篇文章中,我们讲到了,当一段代码被执行时,JavaScript 引擎先会对其进行编译,并创建执行上下文.但是并没有明确说明到底什么样的代码才算符合规范. 那么接下来我们就来明确下,哪些情况下代码才 ...