Educational Codeforces Round 14
来源:互联网 发布:域名到期时间影响seo 编辑:程序博客网 时间:2024/06/10 20:58
C. Exponential notation
time limit per test
2 secondsmemory limit per test
256 megabytesinput
standard inputoutput
standard outputYou are given a positive decimal number x.
Your task is to convert it to the "simple exponential notation".
Let x = a·10b, where 1 ≤ a < 10, then in general case the "simple exponential notation" looks like "aEb". If b equals to zero, the part "Eb" should be skipped. If a is an integer, it should be written without decimal point. Also there should not be extra zeroes in aand b.
Input
The only line contains the positive decimal number x. The length of the line will not exceed 106. Note that you are given too large number, so you can't use standard built-in data types "float", "double" and other.
Output
Print the only line — the "simple exponential notation" of the given number x.
Examples
input
16
output
1.6E1
input
01.23400
output
1.234
input
.100
output
1E-1
input
100.
output
1E2
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <string>#define inf 1<<30#define maxn 10005#define LOOP(a,b,c) for(int a=b;a<=c;a++)using namespace std;string ch;void clear_first_zero(){string::iterator it = ch.begin();if (*it == '.'){ch.insert(it, '0');return;}int t=0;for (int i = 0; i < ch.size(); i++){if (ch[i] == '0'&&ch[i+1]!='.')t++;elsebreak;}ch = ch.erase(0, t);if (!ch.size())ch = "0";}void clear_last_zero(){int pos = ch.find('.', 0);if (pos == -1){//ch += '.';return;}int t = ch.size();for (int i = ch.size() - 1; i >= 0; i--){if (ch[i] == '0') t--;else if (ch[i] == '.') { t--; break; }else break;}ch = ch.erase(t, ch.size());}int move(){int pos = ch.find('.', 0), change = 0;if (ch.size() == 1) return 0;if (pos == -1 ) {ch += '.';pos = ch.find('.', 0);}if (pos >= 2){for (int i = pos; i >= 2; i--){swap(ch[i], ch[i - 1]);//Right = sum(Right, add);change++;}//clear_first_zero();clear_last_zero();}else {string::iterator it = ch.begin();if (*it != '0'&&*(it+1)=='.'&&(it+2)!=ch.end()||ch=="0") return 0;for (int i = 0; i < ch.size(); i++){if (ch[i] != '0'&& ch[i] != '.')break;if (ch[i] != '.') change--;}ch=ch.erase(0, -change+1);if(ch.size()>1)ch.insert(ch.begin() + 1, '.');}return change;}int main(){//freopen("Text.txt", "r", stdin);cin >> ch;clear_first_zero();clear_last_zero();int t = move();if (t > 0)cout << ch << "E" << t << endl;else if (t < 0)elsecout << ch << endl;}
大神的代码:
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <string>#define inf 1<<30#define maxn 1000005#define LOOP(a,b,c) for(int a=b;a<=c;a++)using namespace std;int main() { string s; cin >> s; int pos = s.find('.'); if (pos != -1) { s.erase(pos, 1); } else { pos = s.size(); } int pos2 = 0; for (int i=0; i<s.size(); i++) { if (s[i] > '0') { pos2 = i; break; } } int e = pos - pos2 - 1; s.erase(0, pos2); while (s.size() > 1 && s.back() == '0') { s.pop_back(); } if (s.size() >= 2) { s.insert(1, "."); } if (e == 0) { cout << s << endl; } else { cout << s << "E" << e << endl; } }
0 0
- Educational Codeforces Round 14
- Educational Codeforces Round 14
- Educational Codeforces Round 14
- Educational Codeforces Round 14
- Educational Codeforces Round 14 题解
- Educational Codeforces Round 14 E.Xor-sequences
- 【解题报告】Educational Codeforces Round 14
- Educational Codeforces Round 1
- Educational Codeforces Round 2
- Educational Codeforces Round 2
- Educational Codeforces Round 2
- Educational Codeforces Round 3
- Codeforces Educational Round 3
- Codeforces Educational Round 5
- Codeforces Educational round 5
- Educational Codeforces Round 5
- Educational Codeforces Round 6
- Educational Codeforces Round 6
- Swift高级
- 基于HTML5+WebSocket+JAVA的棋牌游戏开发,从入门到放弃(一)
- Java文件操作大全(3)
- Java程序员必须掌握的8大排序算法
- apache2.2配置httpd.conf
- Educational Codeforces Round 14
- SDWebImage 的使用
- 短信验证码
- date 显示日期与时间
- iOS 广告轮播图
- SSH日期录入,日期精确不能精准到时分秒处理
- 非接触式IC卡的分类(三)
- opencv 拉伸、扭曲、旋转图像-仿射变换 opencv1 / opencv2 / python cv2(代码)
- ES的文件导入到AS,分分钟开挂秒他