1. 程式人生 > >【PAT】1073. Scientific Notation (20)【字串處理】

【PAT】1073. Scientific Notation (20)【字串處理】

題目描述

Scientific notation is the way that scientists easily handle very large numbers or very small numbers. The notation matches the regular expression [+-][1-9]”.”[0-9]+E[+-][0-9]+ which means that the integer portion has exactly one digit, there is at least one digit in the fractional portion, and the number and its exponent’s signs are always provided even when they are positive.

Now given a real number A in scientific notation, you are supposed to print A in the conventional notation while keeping all the significant figures.

翻譯:科學計數法是一種讓科學家可以很輕鬆的處理非常大的數字或非常小的數字的方法。其符號用正則表示式表示為[+-][1-9]”.”[0-9]+E[+-][0-9]+,即整數部分有且只有一位數字,小數部分至少有一位數字,並且它的數字和指數符號總是會提供即使它們為正數。
現在給你一個用科學計數法表示的實數A,你需要按照傳統格式輸出A並保留所有的有效數字。

IPNUT FORMAT

Each input file contains one test case. For each case, there is one line containing the real number A in scientific notation. The number is no more than 9999 bytes in length and the exponent’s absolute value is no more than 9999.

翻譯:每個輸入檔案包含一組測試資料。對於每組輸入資料,第一行包括一個用科學計數法表示的實數A。數字位數的長度不超過9999,並且指數的絕對值不超過9999。

OUTNUT FORMAT

For each test case, print in one line the input number A in the conventional notation, with all the significant figures kept, including trailing zeros,

翻譯:對於每組測試資料,輸出一行傳統格式下的數字A,並保留所有的有效數字,包括尾部0。

Sample Input 1:

+1.23400E-03

Sample Output 1:

0.00123400

Sample Input 2:

1.2E+10

Sample Output 2:

12000000000

解題思路

這道題主要是字串的處理,如果指數為負則新增前導0,為正數時判斷輸出位數是否達到指數,如果未達到在末尾輸出0。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
#define INF 99999999
using namespace std;
char s[10010];
int main(){
    scanf("%s",s);
    int length=strlen(s);
    int flag=0,wei=0,symbol=0;
    for(int i=0;i<length;i++){
        if(i==0&&s[i]!='+')printf("-");
        if(flag&&s[i]=='-')symbol=1;
        if(flag&&s[i]>='0'&&s[i]<='9')wei=wei*10+s[i]-'0';
        if(s[i]=='E')flag=i;
    }
    if(symbol==1){
        printf("0.");
        for(int i=1;i<wei;i++)printf("0");
        for(int i=1;i<flag;i++){
            if(s[i]!='.')printf("%c",s[i]);
        }
    }
    else {
        int f=0;
        for(int i=1;i<flag;i++){
            if(i>wei+2&&!f)printf("."),f=1;
            if(s[i]!='.')printf("%c",s[i]);
        }
        if(wei)
        for(int i=0;i<wei-flag+3;i++){
            printf("0");
        }
    }
    printf("\n");
    return 0;
}


相關推薦

PAT1073. Scientific Notation (20)字串處理

題目描述 Scientific notation is the way that scientists easily handle very large numbers or very small numbers. The notation matches t

PAT-A1073. Scientific Notation 寫題記錄

寫題的時候沒看見整數部分從1-9,考慮了0的情況,寫了很多版本,選了個最精簡的。 #include <cstdio> #include <cstring> int main(){ char input[10010]; scanf("%s",&input);

PAT甲級 1073 Scientific Notation (20 分)String的使用

1073 Scientific Notation (20 分) Scientific notation is the way that scientists easily handle very large numbers or very small numbers. Th

PAT1073 Scientific Notation20 分)

#include <string.h> #include <stdio.h> #include <algorithm> #include <vector> #include <string> #incl

PAT 1073 Scientific Notation[字符串處理][科學記數法]

ping each vid ini nal ssi osi view tex 1073 Scientific Notation(20 分) Scientific notation is the way that scientists easily handle ver

PAT 甲級 1073 Scientific Notation

字串與數字的轉換以及字串的擷取、查詢、插入和刪除 #include <iostream> #include <string> #include <cmath> using namespace std; int main(

PAT 1073 Scientific Notation20 分)

1073 Scientific Notation (20 分) Scientific notation is the way that scientists easily handle very large numbers or very small numbe

PAT 乙級 1084. 外觀數列 (20) 字串

題目連結 思路 用字串模擬 然後要注意一點 它是連續的 才並在一起 就比如說 d, d1, d111, d113, d11231, d112213111, … 比如 d11231 -> d112213111 是 1個d 2 個 1

PAT (Advanced Level) Practice 1073 Scientific Notation20 分)(C++)(甲級)

1073 Scientific Notation (20 分) Scientific notation is the way that scientists easily handle very large numbers or very small numbers. The not

PAT-一道看著很難的水題L2-023. 圖著色問題

pre math urn 問題 png info scan 水題 image 水題!沒其他想說的,還以為可以搞點高大上的搜索呢!十五分鐘,暴力兩重循環就OK了! 代碼如下: #include<iostream> #include<stdio.h>

PAT - 1001 A+B Format字串處理

題目 Calculate a+b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless

1073 Scientific Notation20 分)

#include<bits/stdc++.h> using namespace std; int main() { string t; cin>>t; int flag=0; if(t[0]=='-'){ flag=1; } str

洛谷1580yyy loves Easter_Egg I(字串處理題)

點此看題面 大致題意: 略。(一道模擬題,自己去看題面吧) 幾個字元陣列函式 純粹是一道字串處理題,就當是學了一下各種與字元陣列相關的函式吧! \(gets()\):這個是比較常用的函式,就是讀入一行的字元。 \(strlen()\):求出字元陣列的長度。 \(sscanf()\):從一個字元

1073 Scientific Notation(字串處理)

1073 Scientific Notation (20 分) Scientific notation is the way that scientists easily handle very large numbers or very small numbe

1069. The Black Hole of Numbers (20)模擬——PAT (Advanced Level) Practise

int exce 個人 esp ack ble sam namespace constant 題目信息 1069. The Black Hole of Numbers (20) 時間限制100 ms 內存限制65536 kB 代碼長度限制1600

PAT1004. 成績排名 (20)

esp 10個 升序 con 使用 clas 首地址 相同 bsp 1004. 成績排名 (20) 讀入n名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。 輸入格式:每個測試輸入包含1個測試用例,格式為 第1行:正整數n 第2行:第1個學生的

PAT1014. 福爾摩斯的約會 (20)

mco using ace 奇怪 星期六 tps ble set 字母 1014. 福爾摩斯的約會 (20) 大偵探福爾摩斯接到一張奇怪的字條:“我們約會吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hy

PATB1082 射擊比賽(20 分)

r+ 射擊 spa sca code ace algorithm ret pat 水提水題,直接貼代碼啦 #include<cstdio> #include<algorithm> using namespace std; struct ppp{

PATB1042 字符統計(20 分)

lower int har string.h flag char s algorithm printf for /* 15分的題很簡單,但是自己寫的時候在輸入數據時沒有考慮好下標 另外有忘記了輸入字符時考慮是否有\n */ #include<stdio