PAT 1024 과학 계수 법 (20) (간소화 코드 + 사고방식 + 추천 테스트 샘플)
과학 계수 법 은 과학자 들 이 크 거나 작은 숫자 를 나타 내 는 편리 한 방법 으로 정규 표현 식 [+ -] [1 - 9] 을 만족 시 키 는 것 이다.
현재 과학 계수 법의 형식 으로 실수 A 를 드 립 니 다. 프로그램 을 작성 하여 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하도록 하 십시오.
입력 형식:
각 입력 에는 과학 계수 법 으로 표 시 된 실수 A 를 포함 하 는 테스트 용례 가 1 개 씩 포함 되 어 있다.이 숫자의 저장 길 이 는 9999 바이트 를 초과 하지 않 고 지수의 절대 치 는 9999 를 초과 하지 않 는 다.
출력 형식:
모든 테스트 용례 에 대해 한 줄 에서 일반 숫자 표시 법 에 따라 A 를 출력 하고 모든 유효 위 치 를 유지 하 며 끝의 0 을 포함 합 니 다.
입력 샘플 1:
+1.23400E-03
출력 예시 1:
0.00123400
입력 샘플 2:
-1.2E+10
출력 예시 2:
-12000000000
작성 자: HOU, Qiming
단위: PAT 연맹
시간 제한: 100ms
메모리 제한: 64MB
코드 길이 제한: 16KB
PS:
메모: 1. 숫자 가 많 을 수 있 기 때문에 double 형식 을 사용 할 수 없고 문자열 로 만 출력 할 수 있 습 니 다 (그렇지 않 으 면 두 개의 테스트 점 을 통과 할 수 없습니다).
2. 보충 0 은 동시에 주의해 야 한다. (1) 소수 부분 (2) 정수 부분.
3. 출력 은 보통 숫자: 정수 에 기호 가 없습니다.
4. 정규 표현 식 은 배 울 수 있 고 쓸모 가 많 습 니 다.
추천 테스트 샘플:
+0.1E-1
-0.01E+9999
-0.01E+2
-0.012E+2
#include
#include
#include
using namespace std;
int main(){
string a, res;
cin >> a;
int k = 0;
char ch = a[0];
int flag = 0;
while (a[k] != 'E') { //
if (strchr("+0.-", a[k]) == NULL)
flag = 1;
if (isdigit(a[k]) && flag)
res += a[k];
k++;
}
int l = a.substr(a.find('.'), a.find('E')).length() - 3; //
int c = stoi(a.substr(a.find('E') + 1, a.length())); //
k = c - l;
if (k < 0) {
while (res.length() < abs(k)) // 0
res = '0' + res;
res.insert(res.end() + k, '.'); //
if (res[0] == '.') // 0
res = '0' + res;
}
else {
while (k--) // 0
res += '0';
}
if (ch == '-') // ,
res = ch + res;
cout << res;
return 0;
}
다음으로 전송:https://www.cnblogs.com/F-itachi/p/9974448.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.