zoukankan      html  css  js  c++  java
  • hdu 4927 Series 1

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4927

    题目大意:就是把相邻的两个数想减,然后会得到一串数,然后继续想减,当还剩一个数时,问这个数是多少。

    思路:開始解题时,直接模拟,结果果断WA,然后就在那儿找规律,找出来后发现是各个数的绝对值是杨辉三角(由于这个杨辉三角是正负交替出现的),有啦规律,然后就開始做题,结果还是错啦几次,然后发现是大数问题。然后又改代码,由于数组开的太大,java没过,由于当时用打表求得杨辉三角,所以一直WA,后来才发现測试数据最多10组,可是这时已经不想写啦,后来百度啦一下,原来杨辉三角还有其它几种求法(打开链接)。。。然后才AC的

    认为这题特别苦逼,各种都有啦,就是求杨辉三角那儿,过不了。。。唉,看来还是自己看的太少啦。。。

    java代码:

    import java.math.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args)
        {
            Scanner cin=new Scanner(System.in);
            BigInteger a[]=new BigInteger[3005];
            BigInteger b,sum,flag;
            int i,T,n,k;
            T=cin.nextInt();
            for(k=0;k<T;k++)
            {
                n=cin.nextInt();
                b=BigInteger.ONE;
                for(i=1;i<=n;i++)      //注意这儿求杨辉三角的方式。。。。
                {
                    a[i]=cin.nextBigInteger();
                    a[i]=a[i].multiply(b);
                    b=b.multiply(b.valueOf(n-i));
                    b=b.divide(b.valueOf(i));
                }
                flag=BigInteger.ONE;
                sum=BigInteger.ZERO;
                for(i=n;i>0;i--)      //从最后一个数開始求,由于每行的最后一个总是为正数的。。。
                {
                    a[i]=a[i].multiply(flag);
                    sum=sum.add(a[i]);
                    flag=flag.multiply(flag.valueOf(-1));
                }
               System.out.println(sum);
            }
        }
    
    }


  • 相关阅读:
    android 自定义dialog 易扩展
    android 圆角item shape
    模板方法模式
    观察者模式
    工厂方法模式(选自《设计模式之禅》)
    单例模式
    如何快速创建静态WEB站点
    React Native 插件系列之lottie-react-native
    JavaJavaScript小问题系列之JSON解析
    React Native 插件系列之PushNotificationIOS
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4470372.html
Copyright © 2011-2022 走看看