zoukankan      html  css  js  c++  java
  • 1060 Are They Equal (25 分)

    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;
    }
     
     
  • 相关阅读:
    6.7-CU微程序设计
    6.6-CU组合逻辑设计
    6.5-CU的功能
    6.4-微操作命令的分析
    6.3-时序产生器
    6.2-指令的执行
    6.1-CPU的组成与功能
    5.3-指令格式设计
    【Java循环使用 + JS循环】
    JSON转换集合,报错exepct '[', but {, pos 1, json或者syntax error, expect {, actual [, pos 0
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14961346.html
Copyright © 2011-2022 走看看