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

3 篇文章 0 订阅
3 篇文章 0 订阅

题目背景

以下为原题面,仅供参考:

给定一个数,请将该数各个位上数字反转得到一个新数。

这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为 0(除非小数部分除了 0 没有别的数,那么只保留1个 0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为 0),本次没有负数。

题目描述

给定一个数,请将该数各个位上数字反转得到一个新数。

这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。

  • 整数反转是将所有数位对调。

  • 小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。

  • 分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。

  • 百分数的分子一定是整数,百分数只改变数字部分。

输入格式

一个实数 s

输出格式

一个实数,即 s 的反转数

输入输出样例

输入 #1

5087462

输出 #1

2647805

输入 #2

600.084

输出 #2

6.48

输入 #3

700/27

输出 #3

7/72

输入 #4

8670%

输出 #4

768%

说明/提示

【数据范围】

  • 对于25% 的数据,s 是整数,不大于 20 位;
  • 对于25% 的数据,s 是小数,整数部分和小数部分均不大于 10 位;
  • 对于25% 的数据,s 是分数,分子和分母均不大于 10 位;
  • 对于25% 的数据,s 是百分数,分子不大于 19 位。

【数据保证】

  • 对于整数翻转而言,整数原数和整数新数满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数和原来的数字的最高位数字不应为零。

  • 对于小数翻转而言,其小数点前面部分同上,小数点后面部分的形式,保证满足小数的常见形式,也就是末尾没有多余的 0(小数部分除了 00 没有别的数,那么只保留 1 个 0。若反转之后末尾数字出现 0,请省略多余的 0)

  • 对于分数翻转而言,分数不约分,分子和分母都不是小数。输入的分母不为 0。与整数翻转相关规定见上。

  • 对于百分数翻转而言,见与整数翻转相关内容。

数据不存在负数。

s = list(input())
if '%' in s:
    s1 = "".join(s[:len(s)-1])
    s1 = s1[::-1]+'%'
    for i in s1:
        if i == '0':
            continue
        else:
            break
    if s1.strip("0") == '%':
        print('0%')
    else:
        print(s1.strip("0"))
elif '/' in s:
    s1 = "".join(s)
    s2 = s1[:s1.find('/')]
    s2 = s2[::-1]
    s3 = s1[s1.find('/')+1:]
    s3 = s3[::-1]
    if s2.strip("0") == '':
        print('0/'+s3.strip("0"))
    else:
        print(s2.strip("0")+'/'+s3.strip("0"))
elif '.' in s:
    s1 = "".join(s)
    s2 = s1[:s1.find('.')]
    s2 = s2[::-1]
    s3 = s1[s1.find('.') + 1:]
    s3 = s3[::-1]
    if (s3.strip("0") == '')&(s2.strip("0") == ''):
        print('0.0')
    elif s3.strip("0") == '':
        print(s2.strip("0") + '.0')
    elif s2.strip("0") == '':
        print('0.'+s3.strip("0"))
    else:
        print(s2.strip("0") + '.' + s3.strip("0"))
else:
    s1 = "".join(s)
    if s1.strip("0") == '':
        print('0')
    else:
        print(s1[::-1].strip("0"))

欢迎大佬们帮忙优化一下代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值