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. harbor上传镜像

    在harbor服务器 1. 下载测试上传使用的镜像docker pull hello-world2. 打tagdocker tag docker.io/hello-world:latest 172.1 ...

  2. 如何查看浏览器保存的密码——通过js代码的方式

    打开网站,在密码输入框内鼠标右击,选择“审查元素”(或者按F12),浏览器底部弹出网页的代码,并自动定位到密码框的代码段. 1. 第一种方法 选中元素后,直接在 Console 控制台中输入以下命令( ...

  3. Angularjs 中 ng-repeat 循环绑定事件

    用ng-repeat循环是如果有ng-click之类的事件需要传入参数我们一般这样写 <span class='del' ng-click="RemoveCost({{item.Id} ...

  4. Vs2019 C# .net core 将证书添加到受信任的根证书存储失败,出现以下错误:访问控制列表(ACL)结构无效

    https://www.cnblogs.com/xiyuan/p/10632579.html 使用 vs2017 创建一个 ASP.NET Core Web 应用程序 -> Ctrl + F5 ...

  5. Html5+Mui前端框架,开发记录(一)

    1.下载HBuilder X,地址:http://www.dcloud.io/hbuilderx.html,根据需求选择版本下载. Mui文档,地址:http://dev.dcloud.net.cn/ ...

  6. Asp.Net Core Linux环境下 找不到配置文件、静态文件的问题

    直接发布会找不到配置文件,和静态文件.需要先cd到项目文件夹,然后在发布.

  7. tint2

    #---------------------------------------------# TINT2 CONFIG FILE#---------------------------------- ...

  8. gitea configure

    gitea configure app.ini APP_NAME = Gitea: Git with a cup of tea RUN_USER = LSGX RUN_MODE = prod [oau ...

  9. kong 命令(五)plugin

    介绍 plugin 插件 是运用在kong网关各模块的功能.在http请求或响应过程中执行的插件: 可以实现认证.负载.加密等功能. kong官网提供了一些插件:https://docs.konghq ...

  10. 安装mysql采坑记录

    安装之前彻底卸载之前的mysql,再次安装,初始化数据库那一步失败. 再次彻底卸载mysql,把原先的安装路径的文件夹删除,文件夹路径:C:\ProgramData,再次安装,成功. 总结:重装mys ...