題目描述
給定乙個數,請將該數各個位上數字反轉得到乙個新數。
這次與noip2011普及組第一題不同的是:這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調;小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分;分數反轉是把分母的數反轉,再把分子的數反轉,不交換分子與分母;百分數的分子一定是整數,百分數只改變量字部分。整數新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零;小數新數的末尾不為0(除非小數部分除了0沒有別的數,那麼只保留1個0);分數不約分,分子和分母都不是小數(約分滴童鞋抱歉了,不能過哦。輸入資料保證分母不為0),本次沒有負數。
輸入輸出格式
輸入格式:
乙個數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位
(20個資料)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define dd double
using namespace std;
intmain()
else
if(s[i]
=='/'
)else
if(s[i]
=='%')}
ll flag1 =0;
ll flag2 =0;
ll flag3 =0;
ll flag4 =0;
ll flag5 =0;
ll v =0;
ll w =0;
ll p1 =-1
, p2 =-1
; ll p3 =-1
, p4 =-1
;if(flag ==0)
else}if
(qu.
empty()
)else}}
else
if(flag ==1)
if(flag1 ==0)
else
if(flag1 ==1)
}while((
!st.
empty()
)&&(st.
top()==
'0')
)while
(!qu.
empty()
)else
if(flag2 ==1)
}if(st.
empty()
)else
} cout <<
".";
if(st1.
empty()
)else}}
else
if(flag ==2)
if(flag1 ==0)
else
if(flag1 ==1)
}while(1
)else
}while(1
)else}if
(st.
empty()
)else
} cout <<
"/";
if(que.
empty()
)else
} cout << endl;
}else
if(flag ==3)
while(1
)else}if
(st.
empty()
)else
} cout <<
"%"<< endl;
}}
P1553 數字反轉(公升級版)
給定乙個數,請將該數各個位上數字反轉得到乙個新數。這次與noip2011普及組第一題不同的是 這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調 小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分 分數反轉是把分母的數反轉,再把分子的數反轉,不交換分子與分母 百...
P1553 數字反轉(公升級版)
題目鏈結 題目描述 給定乙個數,請將該數各個位上數字反轉得到乙個新數。這次與noip2011普及組第一題不同的是 這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調 小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分 分數反轉是把分母的數反轉,再把分子的數反轉,...
P1553 數字反轉(公升級版)
題目描述 給定乙個數,請將該數各個位上數字反轉得到乙個新數。這次與noip2011普及組第一題不同的是 這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調 小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分 分數反轉是把分母的數反轉,再把分子的數反轉,不交換分子...