zoukankan      html  css  js  c++  java
  • 算法提高 复数归一化

    题目

    问题描述

    编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i*b/sqrt(a*a+b*b)。使用结构体指针类型作为函数参数可能是必要的。其中实部和虚部由键盘输入,输出为归一化结果,如果归一化结果的实部或虚部为小数的要求保留一位小数。

    样例输入:(格式说明:3 4 分别为以空格隔开的实数的实部和虚部)

      3 4

    样例输出

    0.6+0.8i

    样例输入

    2 5

    样例输出

    0.4+0.9i


    思路:

    依旧纠结的输出~


    代码

    import java.util.*;
    import java.math.*;
    import java.util.regex.*;
    
    
    public class Main {
    
        final static int INF = 0x3f3f3f3f;
        final static int NUM = 100;
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
    
            int a,b;
            double x,y;
            while (sc.hasNext()) {
                a=sc.nextInt();b=sc.nextInt();
                double t=Math.sqrt(a*a+b*b);
                x=a/t;y=b/t;
    
                BigDecimal xx=new BigDecimal(x+"");
                BigDecimal yy=new BigDecimal(y+"");
                if(y==0)System.out.println(String.format("%.1f", xx.stripTrailingZeros()));
                else if(y<0)
                    if(x==0)System.out.println(String.format("%.1f", yy.stripTrailingZeros())+"i");
                    else System.out.println(String.format("%.1f", xx.stripTrailingZeros())+""+String.format("%.1f", yy.stripTrailingZeros())+"i");
                else 
                    if(x==0)System.out.println(String.format("%.1f", yy.stripTrailingZeros())+"i");
                    else System.out.println(String.format("%.1f", xx.stripTrailingZeros())+"+"+String.format("%.1f", yy.stripTrailingZeros())+"i");
    
            }
    
        }
    }
    
  • 相关阅读:
    DOM对象
    多态
    封装和继承
    析构函数
    构造函数
    二维数组
    javascript的基本语法
    javascript数组
    js
    BOM和DOM的区别
  • 原文地址:https://www.cnblogs.com/wygdove/p/4542087.html
Copyright © 2011-2022 走看看