码迷,mamicode.com
首页 > 其他好文 > 详细

1060 Are They Equal (25 分)

时间:2021-07-02 15:54:07      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:bre   string   lex   return   UNC   c++   str   note   修改   

If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered equal since they are both saved as 0 with simple chopping. Now given the number of significant digits on a machine and two float numbers, you are supposed to tell if they are treated equal in that machine.

Input Specification:

Each input file contains one test case which gives three numbers N, A and B, where N (<) is the number of significant digits, and A and B are the two float numbers to be compared. Each float number is non-negative, no greater than 1, and that its total digit number is less than 100.

Output Specification:

For each test case, print in a line YES if the two numbers are treated equal, and then the number in the standard form 0.d[1]...d[N]*10^k (d[1]>0 unless the number is 0); or NO if they are not treated equal, and then the two numbers in their standard form. All the terms must be separated by a space, with no extra space at the end of a line.

Note: Simple chopping is assumed without rounding.

Sample Input 1:

3 12300 12358.9
 

Sample Output 1:

YES 0.123*10^5
 

Sample Input 2:

3 120 128
 

Sample Output 2:

NO 0.120*10^3 0.128*10^3
 
 
#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;

int main(){
    int n;
    cin>>n;
    string a,b;
    cin>>a>>b;
    int lena=0,lenb=0;
    for(int i=0;i<a.size();i++){
        if(a[i]==.){
            break;
        }
        else{
            lena++;
        }
    }
    for(int i=0;i<b.size();i++){
        if(b[i]==.){
            break;
        }
        else{
            lenb++;
        }
    }
    string suba="";
    for(int i=0;i<a.size();i++){
        if(a[i]!=.&&suba.size()<n){
            suba+=a[i];
        }
    }
    while(suba.size()<n){
        suba+=0;
    }
    string subb="";
    for(int i=0;i<b.size();i++){
        if(b[i]!=.&&subb.size()<n){
            subb+=b[i];
        }
    }
    while(subb.size()<n){
        subb+=0;
    }
    if(a=="0"){
        cout<<"NO"<<" "<<"0"<<" ";
        cout<<"0."<<subb<<"*10^"<<lenb<<endl;
    }
    else if(b=="0"){
        cout<<"NO"<<" ";
        cout<<"0."<<suba<<"*10^"<<lena<<endl;
        cout<<"0"<<" ";
        
    }
    else if(subb==suba&&lena==lenb){
        cout<<"YES"<<" ";
        cout<<"0."<<suba<<"*10^"<<lena<<endl;
    }
    else{
        cout<<"NO"<<" ";
        cout<<"0."<<suba<<"*10^"<<lena<<" ";
        cout<<"0."<<subb<<"*10^"<<lenb<<endl;
    }

    return 0;
}

明天修改!

1060 Are They Equal (25 分)

标签:bre   string   lex   return   UNC   c++   str   note   修改   

原文地址:https://www.cnblogs.com/dreamzj/p/14961346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!