首页 > 代码库 > CodeForces #362 div2 B. Barnicle
CodeForces #362 div2 B. Barnicle
题目链接: B. Barnicle
题意:给出科学计数法 转化成十进制的整数或小数 并输出。
思路:暑假训练赛见过了,当时大腿A掉了,并表示是道水题。
刷CF再次遇见,毫不留情WA了几次。比如:
0.e0 0
1.0e0 1
突然觉得自己不能再依赖CF这种看着sample dbug的模式了。
附代码:
/// 给出科学计数法 转化成十进制的整数或小数 并输出#include <stdio.h>#include <string.h>#include <iostream>using namespace std;string str;int main() { //freopen("in.cpp", "r", stdin); while(cin >> str) { string ans = ""; int len = str.length(); int lose; for (int i=len-1; i>=0; --i) { if (str[i] == ‘e‘) { lose = i; break; } } int a = str[0] - ‘0‘; if (a == 0) { int endd = 0; for (int i=lose-1; i>=0; --i){ if (str[i] > ‘0‘ && str[i] <= ‘9‘) { endd = i; break; } } str.resize(endd+1); cout << str << endl; continue; } ans += str[0]; int b = 0; for (int i=lose+1; i<len; ++i) { b = b*10 + str[i]-‘0‘; } int cnt1 = 0; bool first = false; // for (int i=2; i<lose; ++i) { if (cnt1 < b) { ans += str[i]; } else { if (first == false) { first = true; ans += ‘.‘; } ans += str[i]; } cnt1++; } while(cnt1 < b) { ans += ‘0‘; cnt1++; } if (ans[1] == ‘.‘) { int anslen = ans.length(); bool ok = false; for (int i=2; i<anslen; ++i) { if (ans[i] > ‘0‘ && ans[i] <= ‘9‘) { ok = true; break; } } if (!ok) ans.resize(1); } cout << ans << endl; } return 0;}
CodeForces #362 div2 B. Barnicle
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。