CloudLunar
主页
知识库
人文社科
自然科学
跨学科领域
热门分类
算法及题库
云璟月's
墨色集(设计)
指尖集(代码)
未央集(随笔)
流觞集(语录)
如花集(书影)
纸鸢集(小说)
登录
B站
微博
人人
开心
Twitter
Facebook
RSS订阅链接
留言板
关于我
在社交网站上关注我
B站
微博
人人
开心
Twitter
Facebook
RSS订阅
RSS订阅链接
留言板
关于我
查看Sgu/111的源代码
←
Sgu/111
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
[[分类:高精度]] ==摘要== {{信息题|Very simple problem|http://acm.sgu.ru/problem.php?contest{{=}}0&problem{{=}}111|1|100|表示错误|3|time=2015-2-18 00:59:55}} (AC 1817) ==题意== 高精度开方。 ==题解== 这一题和[[CodeVS/3119]]是相同的,可是那题的代码莫名其妙PE了……我也不造为什么,也许是io流的问题,不想研究了。不过,高精度神魔的听说java有大整数/小数类,于是顺手开了个java的小坑。之前配置过Android环境了,环境也就不多提了。入个门,写个二分的高精度开方也不算太难的事了。 ===Java的a+b程序=== 先来个sgu官方java的a+b <pre> //引用相关库// import java.util.*; import java.io.*; //主程序类:Solution// public class Solution { //主程序,参数是String[] arg// public static void main (String[] argv) throws IOException { //创建一个类似于cin的流// BufferedReader cin = new BufferedReader(new InputStreamReader(System.in)); //读入一行// StringTokenizer st = new StringTokenizer(cin.readLine()); //从一行中解析// int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int c = a + b; //输出// System.out.println(c); } } </pre> ===Java的输入输出=== 首先先调教输入输出,java中输出常见有几种: System.out.print(); //cout<<...;// System.out.println(); //cout<<...<<endl;// System.out.printf(); //printf(...);注意换行用%n表示// 输入先要创建一个流: Scanner cin = new Scanner(System.in); 或者 Scanner cin = new Scanner(new BufferedInputStream(System.in));//据说会更快一点// 然后进行输入: 变量=cin.next类型名(); 如 a=cin.nextInt(); 但是听说这种cin就和C++的cin一样容易超时,如果想要快应该用StreamTokenizer和PrintWriter,不过由于我只是用用高精度就无所谓这个了,有兴趣请阅读http://blog.csdn.net/mingchaoyan/article/details/6301858。 ===Java的数据类型=== 常见的有:int,double,boolean,String,BigDecimal(高精度浮点数),BigInteger(高精度整数),注意区分大小写。 ===Java的高精度和进制转换=== 居然没有重载运算符,差评! 用法大概这几种: c=a.add(b);//c=a+b;// c=a.subtract(b);//c=a-b;// c=a.multiply(b);//c=a*b;// c=a.divide(b);//c=a/b;// c=a.mod(b);//c=a%b;// a.compareTo(b);//a和b:相等返回0,小于返回-1,大于返回1// c=a.pow(n);//c=a^n;// str=a.toString();//对应十进制字符串// str=a.toString(n);//对应n进制字符串// a=valueOf(n);//a=(int)n;// c=a.gcd(b);//abs(a)和abs(b)的最大公约数// c=a.abs();//c=abs(a);// i=a.hashCode();//a的哈希码// p=a.isProbablePrime(int certainty);//是否可能为素数(估计)// c=a.nextProbablePrime();//大于a的可能为素数的第一个整数// p=a.signum();//正负号函数// c=BigInteger.ZERO;//c=0;// c=BigInteger.ONE;//c=1;// c=BigInteger.TEN;//c=10;// c=new BigInteger(st, base);//通过base进制的字符串st构造高精度整数// st=Integer.toString(num, base);//把10进制的数num转成base进制的st(base <= 35)// i=Integer.parseInt(st, base); //把base进制的st,转成10进制的int// ==代码== {{折叠|111.cpp代码已折叠 |<pre> import java.io.*; import java.math.BigInteger; import java.util.*; public class Solution{ public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); BigInteger N, l, r, mid; N = cin.nextBigInteger(); l = BigInteger.ZERO; r = N.abs().add(BigInteger.ONE); while (l.compareTo(r) <= 0) { mid = l.add(r).divide(BigInteger.valueOf(2)); if (mid.multiply(mid).compareTo(N) >= 0) r = mid.subtract(BigInteger.ONE); else l = mid.add(BigInteger.ONE); } while (l.multiply(l).compareTo(N) > 0) { l = l.subtract(BigInteger.ONE); } System.out.println(l); } } </pre> |sgu111}} ==参考资料和拓展阅读== <references/>
该页面使用的模板:
模板:=
(
查看源代码
)
模板:信息题
(
查看源代码
)
模板:折叠
(
查看源代码
)
返回
Sgu/111
。
著作权声明
[
编辑
]
除非另有说明,本
网站内容
采用
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
进行许可(中国大陆可以参照
知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议
,如有不同以前者为准)。
如果需要商业化使用,请另联系作者取得授权。
关于
[
编辑
]
联系
@云璟月Lunar
的新浪微博
本站RSS:
RSS链接