zoukankan      html  css  js  c++  java
  • HDU 5429 Geometric Progression

    题意:给出一个大数数列,问是不是等比数列。

    解法:拿java大数搞,注意全是0的情况也是Yes。我把公比用分数表示了,灰常麻烦,题解说只要判a[i - 1] * a[i + 1] == a[i] * a[i]就可以了,涨姿势了。

    代码:

    import java.math.*;
    import java.util.Scanner;
    
    public class Main
    {
        public static void main(String[] args)
        {
            Scanner cin = new Scanner(System.in);
            while(cin.hasNext())
            {
                int T = cin.nextInt();
                while(T-- != 0)
                {
                    boolean flag = false;
                    BigInteger fenzi = BigInteger.ZERO;
                    BigInteger fenmu = BigInteger.ZERO;
                    boolean ans = true;
                    BigInteger a0 = BigInteger.ZERO, a1 = BigInteger.ZERO;
                    int n = cin.nextInt();
                    for(int i = 0; i < n; i++)
                    {
                        BigInteger x = cin.nextBigInteger();
                        if(!ans) continue;
                        if(i == 0)
                        {
                            if(x.equals(BigInteger.ZERO))
                            {
                                flag = true;
                            }
                            a0 = x;
                        }
                        else
                        {
                            if(flag)
                            {
                                if(!x.equals(BigInteger.ZERO))
                                    ans = false;
                            }
                            else
                            {
                                if(x.equals(BigInteger.ZERO))
                                {
                                    ans = false;
                                    continue;
                                }
                                a1 = x;
                                if(i == 1)
                                {
                                    BigInteger r = a0.gcd(a1);
                                    fenzi = a1.divide(r);
                                    fenmu = a0.divide(r);
                                }
                                else
                                {
                                    BigInteger r = a0.gcd(a1);
                                    if(!fenzi.equals(a1.divide(r)))
                                        ans = false;
                                    if(!fenmu.equals(a0.divide(r)))
                                        ans = false;
                                }
                                a0 = a1;
                            }
                        }
                    }
                    if(ans)
                        System.out.println("Yes");
                    else
                        System.out.println("No");
                }
            }
        }
    }
    

      

  • 相关阅读:
    webpack打包注意事项
    打印内存, 打印16进制
    c++ 字符集转换
    RegSvr32 加载失败,找不到指定的模块
    错误码设计
    mfc 移动绘制的图形
    获取、设置光标
    c++ 函数中定义函数
    python linux 自动补全 tab.py
    3.4.5节 完整神经网络样例程序
  • 原文地址:https://www.cnblogs.com/Apro/p/4784822.html
Copyright © 2011-2022 走看看