zoukankan      html  css  js  c++  java
  • ACdream训练赛系列のJava专场

    /*
    * this code is made by mhy12345
    * Problem: 1669
    * Verdict: Accepted
    * Submission Date: 2015-04-21 13:39:02
    * Time: 140MS
    * Memory: 23196KB
    */
    import java.util.*;
    import java.math.*;
     
    public class Main
    {
            static public void main(String args[])
            {
                    Scanner in=new Scanner(System.in);
                    while (in.hasNext())
                    {
                            BigInteger n=in.nextBigInteger();
                            BigInteger l,r,mid;
                            l=new BigInteger("0");
                            r=n.add(BigInteger.valueOf(1));
                            while (r.subtract(l).compareTo(BigInteger.valueOf(1))>0)
                            {
                                    //  System.out.println(l);
                                    //  System.out.println(r);
                                    mid=(r.add(l)).divide(BigInteger.valueOf(2));
                                    if (mid.multiply(mid).compareTo(n)>0)
                                    {
                                            r=mid;
                                    }else
                                    {
                                            l=mid;
                                    }
                            }
                            System.out.println(l.remainder(BigInteger.valueOf(2)));
                    }
            }
    }

    B

    /*
    * this code is made by mhy12345
    * Problem: 1670
    * Verdict: Accepted
    * Submission Date: 2015-04-21 15:01:14
    * Time: 172MS
    * Memory: 27336KB
    */
    import java.util.*;
    import java.math.*;
    import java.io.File;
    import java.io.IOException;
     
    public class Main
    {
            static public void main(String args[])throws IOException
            {
                    Scanner in = new Scanner(System.in);
                    //Scanner in = new Scanner(new File("input.txt"));
                    while (in.hasNext())
                    {
                            BigInteger n=in.nextBigInteger();
                            BigInteger x=new BigInteger("1");
                            for (int i=2;i<=10000000;i++)
                            {
                                    boolean flag=true;
                                    for (int j=2;j<i;j++)
                                    {
                                            if (i%j==0)
                                            {
                                                    flag=false;
                                                    break;
                                            }
                                    }
                                    if (!flag)continue;
                                    if (x.multiply(BigInteger.valueOf(i)).compareTo(n)>0)
                                            break;
                                    x=x.multiply(BigInteger.valueOf(i));
                            }
                            System.out.println(x.toString());
                    }
          

    C

    /*
    * this code is made by mhy12345
    * Problem: 1668
    * Verdict: Accepted
    * Submission Date: 2015-04-21 17:43:49
    * Time: 992MS
    * Memory: 152756KB
    */
    import java.io.*;
    import java.math.*;
    import java.util.*;
     
    public class Main
    {
            static public void main(String args[])throws IOException
            {
                    Scanner in = new Scanner(System.in);
                    int n;
                    while (in.hasNext())
                    {
                            n=in.nextInt();
                            int a1,b1,a2,b2,a3,b3;
                            a1=in.nextInt();
                            b1=in.nextInt();
                            a2=in.nextInt();
                            b2=in.nextInt();
                            a3=in.nextInt();
                            b3=in.nextInt();
                            BigDecimal v1=BigDecimal.valueOf(a1).divide(BigDecimal.valueOf(b1),100,BigDecimal.ROUND_HALF_EVEN);
                            BigDecimal v2=BigDecimal.valueOf(a2).divide(BigDecimal.valueOf(b2),100,BigDecimal.ROUND_HALF_EVEN);
                            BigDecimal v3=BigDecimal.valueOf(a3).divide(BigDecimal.valueOf(b3),100,BigDecimal.ROUND_HALF_EVEN);
                            BigDecimal dp[][]=new BigDecimal[110][];
                            for (int i=0;i<110;i++)
                                    dp[i]=new BigDecimal[110];
                            for (int i=0;i<110;i++)
                                    for (int j=0;j<110;j++)
                                            dp[i][j]=new BigDecimal("0");
                            BigDecimal poss[][]=new BigDecimal[110][];
                            for (int i=0;i<110;i++)
                                    poss[i]=new BigDecimal[110];
                            for (int i=0;i<110;i++)
                                    for (int j=0;j<110;j++)
                                            poss[i][j]=new BigDecimal("0");
                            dp[n][n]=BigDecimal.ZERO;
                            poss[n][n]=BigDecimal.ONE;
                            BigDecimal va=v1.add(v3.divide(BigDecimal.valueOf(2),100,BigDecimal.ROUND_HALF_EVEN));
                            BigDecimal vb=v2.add(v3.divide(BigDecimal.valueOf(2),100,BigDecimal.ROUND_HALF_EVEN));
                            for (int i=n;i>=1;i--)
                            {
                                    for (int j=n;j>=i;j--)
                                    {
                                            if (j!=i && i!=1)
                                            {
                                                    poss[i-1][j]=poss[i-1][j].add(poss[i][j].multiply(v2));
                                                    dp[i-1][j]=dp[i-1][j].add(dp[i][j].add(poss[i][j]).multiply(v2));
                                                    poss[i][j-1]=poss[i][j-1].add(poss[i][j].multiply(v3));
                                                    dp[i][j-1]=dp[i][j-1].add(dp[i][j].add(poss[i][j]).multiply(v3));
                                                    poss[i-1][j-1]=poss[i-1][j-1].add(poss[i][j].multiply(v1));
                                                    dp[i-1][j-1]=dp[i-1][j-1].add(dp[i][j].add(poss[i][j]).multiply(v1));
                                                    //System.out.println(poss[i][j-1] +" "+ poss[i][j]);
                                            }else if (i==1 && j!=i)
                                            {
                                                    poss[i][j-1]=poss[i][j-1].add(poss[i][j]);
                                                    dp[i][j-1]=dp[i][j-1].add(dp[i][j].add(poss[i][j]));
                                            }else if (j==i && i!=1)
                                            {
                                                    poss[i-1][j-1]=poss[i-1][j-1].add(poss[i][j].multiply(va));
                                                    dp[i-1][j-1]=dp[i-1][j-1].add((dp[i][j].add(poss[i][j])).multiply(va));
                                                    poss[i-1][j]=poss[i-1][j].add(poss[i][j].multiply(vb));
                                                    dp[i-1][j]=dp[i-1][j].add((dp[i][j].add(poss[i][j])).multiply(vb));
                                            }
                                    }
                            }
                            /*
                            for (int i=1;i<=n;i++)
                            {
                                    for (int j=1;j<=n;j++)
                                    {
                                            System.out.print(dp[i][j]+" ");
                                    }
                                    System.out.println();
                            }
                            */
                        //  System.out.println(dp[1][1]);
                            System.out.println(dp[1][1].setScale(50, BigDecimal.ROUND_HALF_EVEN).toString());
                            /*
                            double vv1,vv2,vv3;
                            vv1=(double)a1/b1;
                            vv2=(double)a2/b2;
                            vv3=(double)a3/b3;
                            double dp[][]=new double[110][];
                            for (int i=0;i<110;i++)
                                    dp[i]=new double[110];
                            double poss[][]=new double[110][];
                            for (int i=0;i<110;i++)
                                    poss[i]=new double[110];
                            dp[n][n]=0;
                            poss[n][n]=1;
                            for (int i=n;i>=1;i--)
                            {
                                    for (int j=n;j>=i;j--)
                                    {
                                            if (j!=i && i!=1)
                                            {
                                                    //System.out.println("hehe"+i+" "+j);
                                                    poss[i-1][j]+=poss[i][j]*vv2;
                                                    dp[i-1][j]+=(dp[i][j]+poss[i][j])*vv2;
                                                    poss[i][j-1]+=poss[i][j]*vv3;
                                                    dp[i][j-1]+=(dp[i][j]+poss[i][j])*vv3;
                                                    poss[i-1][j-1]+=poss[i][j]*vv1;
                                                    dp[i-1][j-1]+=(dp[i][j]+poss[i][j])*vv1;
                                                    //System.out.println(poss[i][j-1] +" "+ poss[i][j]);
                                            }else if (i==1 && j!=i)
                                            {
                                                    poss[i][j-1]+=poss[i][j];
                                                    dp[i][j-1]+=dp[i][j]+poss[i][j];
                                            }else if (j==i && i!=1)
                                            {
                                                    poss[i-1][j-1]+=poss[i][j]*(vv1+vv3/2);
                                                    dp[i-1][j-1]+=(dp[i][j]+poss[i][j])*(vv1+vv3/2);
                                                    poss[i-1][j]+=poss[i][j]*(vv2+vv3/2);
                                                    dp[i-1][j]+=(dp[i][j]+poss[i][j])*(vv2+vv3/2);
                                            }
                                    }
                            }
                            for (int i=1;i<=n;i++)
                            {
                                    for (int j=1;j<=n;j++)
                                    {
                                            System.out.print(poss[i][j]+" ");
                                    }
                                    System.out.println();
                            }
                            System.out.println(dp[1][1]);
                            //System.out.println(poss[1][1]);
                            */
                    }
            }
    };

    剩下两道题简直有意思。。。。。不写了。

  • 相关阅读:
    ReentrantReadWriteLock读写锁的使用
    Exchanger的使用
    CyclicBarrier的用法
    Semaphore的使用
    CountDownLatch的使用
    BlockingQueue的使用
    对字符串操作的各种笔试题
    struts2请求过程源码分析
    shell语法使用
    hibernate调用mysql存储过程
  • 原文地址:https://www.cnblogs.com/mhy12345/p/4516617.html
Copyright © 2011-2022 走看看