ACM-ICPC 2018 焦作赛区网络预赛 J Participate in E-sports(大数开方)

摘要:
经典问题:bzoj1213使用java设置一个板来查找平方根,然后将其相乘以检查它。

https://nanti.jisuanke.com/t/31719

题意

让你分别判断n或(n-1)*n/2是否是完全平方数

分析

 二分高精度开根裸题呀。经典题:bzoj1213

用java套个板子求出平方根,再乘回来检验一下就好。

import java.util.*;
import java.math.*;
public class Main{
    static BigInteger check(BigInteger n,BigInteger x) {
        BigInteger ans=BigInteger.valueOf(1);
        BigInteger a=BigInteger.valueOf(1);
        for(BigInteger i=BigInteger.ZERO;i.compareTo(n)<0;i=i.add(a)) {
            ans=ans.multiply(x);
        }
        return ans;
    }
    static BigInteger Get(BigInteger n,BigInteger m) {//大数m开n次根
        BigInteger l=BigInteger.ZERO;
        BigInteger a=BigInteger.valueOf(2);
        BigInteger b=BigInteger.valueOf(1);
        BigInteger r=BigInteger.valueOf(1);
        BigInteger mid=BigInteger.ZERO;
        while(check(n,r).compareTo(m)<=0) {
            l=r;
            r=r.multiply(a);
        }
        while(l.compareTo(r)<=0) {
            mid=l.add(r).divide(a);
            if(check(n,mid).compareTo(m)<=0) l=mid.add(b);
            else r=mid.subtract(b);
        }
        return r;
    }
    public static void main(String[]args) {
        int t;
        Scanner sca=new Scanner(System.in);
        t=sca.nextInt();
        BigInteger m=new BigInteger("2");
        while(t--!=0){
            BigInteger n1=sca.nextBigInteger();
            BigInteger n2=n1.multiply(n1.subtract(BigInteger.ONE)).divide(m);
            BigInteger res1=Get(m,n1);
            BigInteger res2=Get(m,n2);
            boolean f1=false,f2=false;
            if(res1.multiply(res1).compareTo(n1)==0) f1=true;
            if(res2.multiply(res2).compareTo(n2)==0) f2=true;
            if(f1&&f2){
                System.out.println("Arena of Valor");
            }else if(f1){
                System.out.println("Hearth Stone");
            }else if(f2){
                System.out.println("Clash Royale");
            }else{
                System.out.println("League of Legends");
            }
            
        }
    }
}

免责声明:文章转载自《ACM-ICPC 2018 焦作赛区网络预赛 J Participate in E-sports(大数开方)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux 配置 NginxACM-ICPC 2018 焦作赛区网络预赛 L Poor God Water(矩阵快速幂,BM)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

XproerIM2更新201159 Xproer

1.完成平台的迁移工作,从MFC转为WTL平台。 2.完成UI库的更新。完善控件的事件处理模型,在XproerIM使用的是比较简单的观察者模式,代码比较冗余,在XproerIM2中使用了sigslot开源库,将控件的事件处理变的更加灵活和简单。完成常用控件的代码编写。 3.完成IM初步风格。采用MSN的风格,做了一些小的改动。采用MSN风格主要是因为MSN比...

Hadoop为什么没有采用RAID?

Hadoop为什么没有采用RAID?_Just Do it!_百度空间 Hadoop为什么没有采用RAID? HDFS集群没有采用RAID(冗余磁盘阵列)作为datanodes的存储设备(尽管namenode使用RAID来保护元数据不会丢失)。由于HDFS是采用在节点之间块复制的方法,所以RAID提供的冗余机制对HDFS来说是多余的。 此外,RAID条带...

换个环境继续学习

这周从实习了半年兼职了半年的 Jinfonet 辞职了,下周进入云电信通 试用。 离开金峰原因有二: 不喜欢做报表 薪资问题 云电信通开发主要有两个部门:研发部,项目部。期待进入信通研发部,可以做一些自己喜欢的事情 :-) 争取提前转正。 我自己还是一样,理想是一定要实现的,想做的东西也会一如既往地坚持去做。...

编程之美2013 初赛一 A 竞价 学习大牛的思路

这题我做了N久也做不出....赛后看了大牛AC的思路.... Program: #include<iostream> #include<cmath> #include<stack> #include<queue> #include<set> #include<algorithm>...

用ActivityGroup解决TabHost中多个Activity跳转问题

下面图片是测试程序的效果图 两个选项卡的实现 布局文件 main.xml Xml代码 <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/a...

Makefile学习笔记 我的CPP之路 C++博客

Makefile学习笔记 - 我的CPP之路 - C++博客 Makefile学习笔记 Makefile学习笔记先列出一个很简单的Makefile例子:---------hd.cpp#include "hd.h"using namespace std;int main() {cout << "hello, didier!1\n";}-----...