题目描述

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

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

输入输出格式

输入格式:
一个数s

输出格式:
一个数,即s的反转数

输入输出样例

输入样例#1:

5087462

600.084

700/27

8670%
输出样例#1:

2647805

6.48

7/72

768%
说明

所有数据:25%s是整数,不大于20位

25%s是小数,整数部分和小数部分均不大于10位

25%s是分数,分子和分母均不大于10位

25%s是百分数,分子不大于19位

(20个数据)

我以为不会不符合常理,比如不会有0000,0000.000,
0/123的结果是0,然而是0/321
踏过的坑:
//9000%->9%
//0.000009->0.9
//0.900000->0.000009
//00000.00000->0.0
//0/1230000->0/123 不是0也不是0/0000123
//000000000->0

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
char  s[25];
int b[25];
bool flag,flr;
void print(int ped,int pst,char v)
{    if(pst>ped) return;while(b[ped]==0 && flag!=1) ped--;//如果不是小数,去掉前导零,0.90000000 ped--if(flag==1)//如果是小数,去掉后导零pst++while(b[pst]==0) pst++;if(ped<0 || pst>ped)//如果形如0000 000.0000 0000%之类的 ,那么通过这步可以把零去掉 {printf("%d",0); if(v!='#'){if(v=='.') flag=1;  //标记小数,用于后导0的去除 printf("%c",v);} return; } for(int i=ped;i>=pst;i--)printf("%d",b[i]);//输出该数 if(v!='#'){if(v=='.') flag=1;//标记小数 printf("%c",v);}
}
int main()
{cin>>s;int len=strlen(s);s[len]='#';//以井号结束 int st=0,ed=0;for(int i=0;i<=len;i++){if(s[i]>='0' && s[i]<='9'){b[i]=s[i]-'0';}else{ed=i-1;print(ed,st,s[i]);st=i+1;//跳过符号位 }}
}

曾经用队列做的:

#include<iostream>
#include<stack>
#include<string>
#include<sstream>
using namespace std;
int main(){stack<char> s;char c,op=' ';string ss;getline(cin,ss);stringstream in(ss);bool f=true;while(in>>c){if(c>='0'&&c<='9') {if(op!='.') s.push(c);else {if(!(c=='0'&&f)) s.push(c);if(c!='0') f=false;}}else{op=c;while(!s.empty()&&s.top()=='0') s.pop();if(s.empty()) cout<<0;while(!s.empty()) {cout<<s.top();s.pop();}cout<<op;}}while(!s.empty()&&s.top()=='0') s.pop();if(op!='%') if(s.empty()) cout<<0;while(!s.empty()) {cout<<s.top();s.pop();}return 0;
}

P1533数字翻转 升级版相关推荐

  1. C语言 数字翻转输出

    翻转数 题目描述 M国的数字体系比较特别,高位数字位于右侧,低位数字位于左侧,刚好与我们的日常数字体系相反,给在M国旅游的中国游客带来很大麻烦.例如,M国中标价"128"元的商品, ...

  2. C语言-有关数字翻转的函数

    众所周知,有两种形式的数字翻转.一种是忽略0的. 如,123的翻转数字是321,而700的翻转数字是7.我们称之为第一种数字翻转.它的函数如下. int overturn(int num){int o ...

  3. 将一个五位输入数字翻转输出(趣味版本)

    翻转输出数字 今天偶然发现一个之前的题目: 键盘录入一个五位数字,将数字翻转输出 形如12345 输出54321 众所周知,if语句可以进行判断,形如: int number=10024; if(nu ...

  4. 洛谷P1553 数字翻转(升级版)

    题目链接 https://www.luogu.org/problemnew/show/P1553 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的 ...

  5. 2.1 基础-数字翻转

    题目 对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0.例如: 如果 X = 123,则rev(X) = 321; 如果 X = 100,则rev(X) = 1. 现在给出整 ...

  6. 2017年网易校招题 数字翻转

    题目描述 对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0.例如: 如果 X = 123,则rev(X) = 321; 如果 X = 100,则rev(X) = 1. 现在给 ...

  7. 【机试备考】Day16-二进制数字翻转 | 二进制和十进制的相互转化

    题目 BUPT 2018 计算机 ProblemA 输入数据组数t,每组数据输入一个十进制数x(0<x<2^32),将其二进制位反转(共32位),然后输出对应的十进制数 提示 2^32-1 ...

  8. sort 、sorted、range、join方法 数字的正序、倒叙、翻转

    大家可以想象一下 如果一串数字 是混乱的没有顺序这个时候你想要排序怎么办呢?  这个时候顺势而生的就有了sort方法 把数字从大到小的排列----->sort() 只对列表 li = [3, 5 ...

  9. Python实现给一个不多于5位的正整数,求它是几位数,逆序打印这个数字

    一.简单版(只实现这两个需求) num=input('你好呀,请输入一个不多于五位的正整数>>>') print('嗯,我看过了,这是一个'+str(len(num))+'位数.') ...

最新文章

  1. PTA基础编程题目集-6-12 判断奇偶性
  2. AI算法不断突破 人工智能驱动创新需找对方向
  3. 百度eCharts体验
  4. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
  5. 【机器学习】Pandas练习题-提高你的数据分析技能
  6. 一起来玩树莓派---树莓派3B+安装Ubuntu16.04系统
  7. echarts标记线的样式_ECharts提示框组件指示器的线条样式
  8. 华为p4支持鸿蒙功能吗_什么样的手机可以刷鸿蒙系统?看看你的手机支持吗?...
  9. Olympic Games -basketball
  10. 利用drozer进行Android渗透测试
  11. stringbuilder 拼接语句缺失右括号_C++编程基础: 6. 语句、表达式和运算符
  12. VHDL 四选一数据选择器
  13. 利用浏览器另存为将网页内容保存为word
  14. HTML5+app开发学习之IOS打包篇
  15. 世界上最简单的会计书(利润表)
  16. android webview使用html5input id=input type=file/ 上传相册、拍照照片
  17. 关于计算机名的相关讨论 【好帖 好帖 哈哈。。】
  18. 菜鸟入门:Java语言学习
  19. 怎么看电脑系统是64位还是32位
  20. JAVA公益捐赠管理系统_公益组织捐赠系统的设计与实现

热门文章

  1. RISC-V MCU移植RTOS系列教程(一)
  2. 劳务派遣员工转正制度是怎么规定的
  3. java有声小说如何开发_怎么加入有声小说配音?如何做一个有声小说配音员
  4. Java堆外缓存OHC在马蜂窝推荐引擎的应用
  5. 点击领取你的第1份「传智周报」
  6. 《关于费尔巴哈的提纲》读书笔记
  7. Java笔记(学习中。。)
  8. [Unity]常用文件夹和特殊文件夹
  9. ubuntu 换源 阿里源
  10. 优傲机器人UR+平台 打造汽车智造“百变工具”