洛谷P1553 数字反转(升级版)
2016-07-08 16:34
363 查看
这个题目要判断多种情况。
尤其注意的是,小数点后面的数如果是00XXX,则要输出XXX而不是XXX00。还有,如果只剩下一个0了,请不要吃掉它。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char num[10010];
void fz(int start,int end,int isdend){
int flag=0,detot=0;
if(isdend==1){
for(int i=start;i<end;i++){
if(flag==0 && num[i]=='0'){
if(i==end-1){
cout<<num[i];
}
}
else if(flag==0 && num[i]!='0'){
flag=1;
num[detot]=num[i];
detot++;
}
else{
num[detot]=num[i];
detot++;
}
}
for(int i=detot-1;i>=0;i--){
cout<<num[i];
}
}
else{
for(int i=start-1;i>=end;i--){
if(flag==0 && num[i]=='0'){
if(i==end){
cout<<num[i];
}
}
else if(flag==0 && num[i]!='0'){
flag=1;
cout<<num[i];
}
else{
cout<<num[i];
}
}
}
}
int main(){
cin>>num;
int dot=-10,pcent=-10,chu=-10,flag=0;
for(int i=0;i<strlen(num);i++){
if(num[i]=='.'){
dot=i;break;
}
else if(num[i]=='%'){
pcent=i;break;
}
else if(num[i]=='/'){
chu=i;break;
}
}
if(dot!=-10){
fz(dot,0,0);
cout<<".";
fz(dot+1,strlen(num),1);
}
else if(pcent!=-10){
fz(pcent,0,0);
cout<<"%";
}
else if(chu!=-10){
fz(chu,0,0);
cout<<"/";
fz(strlen(num),chu+1,0);
}
else{
fz(strlen(num),0,0);
}
cout<<endl;
return 0;
}
尤其注意的是,小数点后面的数如果是00XXX,则要输出XXX而不是XXX00。还有,如果只剩下一个0了,请不要吃掉它。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char num[10010];
void fz(int start,int end,int isdend){
int flag=0,detot=0;
if(isdend==1){
for(int i=start;i<end;i++){
if(flag==0 && num[i]=='0'){
if(i==end-1){
cout<<num[i];
}
}
else if(flag==0 && num[i]!='0'){
flag=1;
num[detot]=num[i];
detot++;
}
else{
num[detot]=num[i];
detot++;
}
}
for(int i=detot-1;i>=0;i--){
cout<<num[i];
}
}
else{
for(int i=start-1;i>=end;i--){
if(flag==0 && num[i]=='0'){
if(i==end){
cout<<num[i];
}
}
else if(flag==0 && num[i]!='0'){
flag=1;
cout<<num[i];
}
else{
cout<<num[i];
}
}
}
}
int main(){
cin>>num;
int dot=-10,pcent=-10,chu=-10,flag=0;
for(int i=0;i<strlen(num);i++){
if(num[i]=='.'){
dot=i;break;
}
else if(num[i]=='%'){
pcent=i;break;
}
else if(num[i]=='/'){
chu=i;break;
}
}
if(dot!=-10){
fz(dot,0,0);
cout<<".";
fz(dot+1,strlen(num),1);
}
else if(pcent!=-10){
fz(pcent,0,0);
cout<<"%";
}
else if(chu!=-10){
fz(chu,0,0);
cout<<"/";
fz(strlen(num),chu+1,0);
}
else{
fz(strlen(num),0,0);
}
cout<<endl;
return 0;
}
相关文章推荐
- P1478
- P1035
- P1008 难度2.7
- 【题解】洛谷1164小A点菜
- 洛谷P1035 级数求和
- 10.1做题——洛谷P1433 吃奶酪
- 10.9做题——洛谷P1927防护伞
- 10.10做题——USACO1.2/洛谷1207双重回文数(Dual Palindromes)
- 洛谷P1196银河英雄传说
- 洛谷P1115最大子段和
- 洛谷1086/NOI题库1.13.38/NOIP2004普及组第2题 花生采摘
- 洛谷P1024/NOI题库7891(2.3)/NOIP2001提高组T1 一元三次方程求解
- NOIP2002提高组/洛谷P1031均分纸牌
- 洛谷1791/CODEVS1214线段覆盖
- 洛谷P1541/CODEVS1068 乌龟棋
- 洛谷P1020/CODEVS1044 导弹拦截(拦截导弹)
- CODEVS1048石子归并
- 洛谷 P1352 TYVJ P1052 CODEVS 1380 没有上司的舞会
- 【洛谷1025 数的划分】【搜索】
- 【洛谷1031 均分纸牌】【模拟】