題目描述
給定乙個數,請將該數各個位上數字反轉得到乙個新數。
這次與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個資料)
首先:整數的話,要保證從末尾不為零開始輸出。
其次:小數的話,小數點前的,需要從小數點前不為零開始倒序輸出,小數點後的,需要從末尾不為零的輸到小數點後不為零的區間。若輸入的形如00.000,需要輸出0.0,再進行特判;,,,。。。
除法:和小數處理基本一致;
取餘:簡單一點,只需要處理%前的就行;
當然都得特判一下輸入的是不是零,進行特殊處理。。。
#include
#include
#include
#include
#include
#include
using namespace std;
typedef
long
long ll;
#define maxn 10005
#define mod 7654321
void
shuzi
(string a)
}for
(int i=pos;i>=
0;i--
) cout<}void
dian
(string a,
int b)
//605
else
if(a[i]
!='0')}
if(k!=-1
&&num==1)
}if(num==-1
) cout<<0;
cout<<
".";
//.9860
k=-1
;int j=a.
length()
-1; num=-1
;int pos=a.
length()
-1;for
(int i=a.
length()
-1;i>b;i--)}
//cout(int i=b+
1;i<=pos;i++
)else
if(a[i]
!='0')}
if(k!=-1
&&num==1)
}if(num==-1
) cout<<0;
}void
chufa
(string a,
int b)
//700/27
else
if(a[i]
!='0')}
if(k!=-1
&&num==1)
}if(num==-1
) cout<<0;
cout<<
"/";
k=-1
;int j=a.
length()
-1; num=-1
;int pos=a.
length()
-1;for
(int i=a.
length()
-1;i>b;i--)}
for(
int i=b+
1;ilength()
;i++
)else
if(a[i]
!='0')}
if(num==0)
//cout(k!=-1
&&num==1)
}if(num==-1
) cout<<0;
}void
quyu
(string a,
int b)
//8670%
else
if(a[i]
!='0')}
if(k!=-1
&&num==1)
}if(num==-1
) cout<<
"%";
}int
main()
;//. / %
int b,c,d;
cin>>a;
for(
int i=
0;ilength()
;i++)if
(fuhao[1]
==0&&fuhao[2]
==0&&fuhao[3]
==0)shuzi
(a);
if(fuhao[1]
)dian
(a,b);if
(fuhao[2]
)chufa
(a,c);if
(fuhao[3]
)quyu
(a,d)
;return0;
}
P1553 數字反轉(公升級版)
給定乙個數,請將該數各個位上數字反轉得到乙個新數。這次與noip2011普及組第一題不同的是 這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調 小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分 分數反轉是把分母的數反轉,再把分子的數反轉,不交換分子與分母 百...
P1553 數字反轉(公升級版)
題目鏈結 題目描述 給定乙個數,請將該數各個位上數字反轉得到乙個新數。這次與noip2011普及組第一題不同的是 這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調 小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分 分數反轉是把分母的數反轉,再把分子的數反轉,...
P1553 數字反轉(公升級版)
題目描述 給定乙個數,請將該數各個位上數字反轉得到乙個新數。這次與noip2011普及組第一題不同的是 這個數可以是小數,分數,百分數,整數。整數反轉是將所有數字對調 小數反轉是把整數部分的數反轉,再將小數部分的數反轉,不交換整數部分與小數部分 分數反轉是把分母的數反轉,再把分子的數反轉,不交換分子...