P1553 数字反转(升级版)
来源:互联网 发布:家居设计软件手机 编辑:程序博客网 时间:2024/05/22 03:25
一道水题! 但细节很多
题目
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数之改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。
易错:
-输入1.00 ,输出1.0
-输入0000000000,输入0.
代码:
#include<iostream>#include<string>using namespace std;string turn_zhengshu(string word);string dele0(string word);int main(){ int sign=0; //1:整数 2:小数 3:分数 4:百分数 string word; unsigned i=0; getline (cin,word); for(i;i<word.size();i++){ if(word[i]=='.') {sign=2;break;} else if(word[i]=='/') {sign=3;break;} else if(word[i]=='%') {sign=4;break;} else sign=1; } ///开始反转 string fanzhuan,qian,hou; if(sign==1) { fanzhuan=turn_zhengshu(word); cout<<fanzhuan<<endl; } else if(sign==2||sign==3){ for(i=0;i<word.size();i++){ if(word[i]!='.'&&word[i]!='/') qian+=word[i]; else break; } qian=turn_zhengshu(qian); i++; while(i<word.size()){ hou+=word[i]; i++; } hou=turn_zhengshu(hou); hou=dele0(hou); if(sign==2) cout<<qian<<"."<<hou<<endl; else if(sign==3) cout<<qian<<"/"<<hou<<endl; } else if(sign==4){ int len1=word.size(); word[len1-1]='0'; fanzhuan=turn_zhengshu(word); cout<<fanzhuan<<"%"<<endl; }}string turn_zhengshu(string word) //整数反转并删除末尾的0 { int len=word.size()-1; string newstr; while(1){ if(word[len]=='0') len--; else break; } if(len==-1) newstr+='0'; while(len!=-1){ newstr+=word[len]; len--; } return newstr;}string dele0(string word) //删除末尾的0 但不反转 { int len=word.size()-1; string newstr; while(1){ if(word[len]=='0') len--; else break; } if(len==-1) {newstr+='0'; return newstr;} for(int j=0;j<=len;j++){ newstr+=(word[j]); } return newstr;}
0 0
- 洛谷P1553 数字反转(升级版)
- P1553 数字反转(升级版)(洛谷)
- P1553 数字反转(升级版)
- P1553 数字反转(升级版)
- lg P1553 数字反转(升级版)
- P1553 数字反转(升级版)
- <NOIP> 19 . P1553 数字反转(升级版)
- 数字反转(升级版)
- 数字反转(升级版)
- 数字反转升级版
- string - 数字反转升级版
- 新手村 简单字符串 数字反转(升级版)
- 数字反转(水)
- 数字反转(新)
- 九度OJ 1089:数字反转 (数字反转)
- noip2011 数字反转 (模拟)
- Working out (数字三角形升级版)
- 数字反转
- java Socket学习
- HDU1088
- libpcap使用
- 网易之双核问题
- beaglebone black tftp与nfs挂载根文件系统
- P1553 数字反转(升级版)
- P1028 数的计算
- Android之一张图片说明事件的分发和消费
- IOS发布—— iTunes Connect: Your app "管理系统" (Apple ID: 123456789) has one or more issues
- P1036 选数
- ES6 基础教程(一)
- 【深入理解Java虚拟机】之自己编译JDK(已经完成,其中有自己遇到的各种问题及解决办法)
- PyQt4一个button对应一个slot(插槽)实例源码讲解
- 常见三种数据库连接池在WEB程序的应用总结