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");
    
            }
    
        }
    }
    
  • 相关阅读:
    Linux下gdb attach的使用(调试已在运行的进程)
    Linux ps 命令
    SemaphoreFullException when checking user role via ASP.NET membership
    c程序内存分布
    正则表达式
    事务实战感悟
    oracle免客户端安装 plsql连接
    关于tomcat的热部署
    json工具包比较 fastjson jackson gson
    图片 滚动 放大缩小 旋转
  • 原文地址:https://www.cnblogs.com/wygdove/p/4542087.html
Copyright © 2011-2022 走看看