You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.2 KiB
84 lines
2.2 KiB
#include<bits/stdc++.h>
|
|
|
|
using namespace std;
|
|
/**
|
|
0.000009->0.9
|
|
0.900000->0.000009
|
|
00000.00000->0.0
|
|
0/1230000->0/321不是0也不是0/0000321
|
|
000000000->0
|
|
1.00 -->1.0
|
|
0% --->0%
|
|
*/
|
|
//是哪种?
|
|
int getType(string a) {
|
|
if (a.find('.') != a.npos) return 2;
|
|
if (a.find('/') != a.npos) return 3;
|
|
if (a.find('%') != a.npos) return 4;
|
|
return 1;//整数
|
|
}
|
|
|
|
int main() {
|
|
string a;
|
|
int i, p, end;
|
|
cin >> a;
|
|
if (a == "0") {
|
|
printf("%d", 0);
|
|
return 0;
|
|
}
|
|
switch (getType(a)) {
|
|
case 1:
|
|
//去掉前导0
|
|
i = a.size() - 1;
|
|
while (a[i] == '0')i--;
|
|
//输出
|
|
if (i == -1) cout << 0;
|
|
else
|
|
while (i >= 0) cout << a[i], i--;
|
|
break;
|
|
case 2:
|
|
p = a.find('.');
|
|
//输出整数部分
|
|
i = p - 1;
|
|
while (a[i] == '0')i--;
|
|
//如果只有一个0
|
|
if (i == -1) cout << 0;
|
|
else while (i >= 0) cout << a[i], i--;
|
|
//输出.
|
|
cout << ".";
|
|
//小数部分开始
|
|
i = a.size() - 1;
|
|
//跳过后导0
|
|
end = p + 1;
|
|
while (a[end] == '0')end++;//去除前导0
|
|
if (i < end) cout << 0;
|
|
else
|
|
while (i >= end) cout << a[i], i--;
|
|
break;
|
|
case 3:
|
|
p = a.find('/');
|
|
//分子
|
|
i = p - 1;
|
|
while (a[i] == '0')i--;
|
|
if (i == -1) cout << 0;
|
|
else while (i >= 0) cout << a[i], i--;
|
|
//除号
|
|
cout << "/";
|
|
//分母
|
|
i = a.size() - 1;
|
|
//跳过前导0
|
|
while (a[i] == '0')i--;
|
|
while (i > p) cout << a[i], i--;
|
|
break;
|
|
case 4:
|
|
//去掉前导0
|
|
i = a.size() - 2;//注意这里最后一位是%号
|
|
while (a[i] == '0')i--;
|
|
if (i == -1) cout << 0;
|
|
else while (i >= 0) cout << a[i], i--;
|
|
//输出%
|
|
cout << "%";
|
|
break;
|
|
}
|
|
return 0;
|
|
} |