java在acm中的一些应用
这两天遇到了一些关于大数据处理的题目,发现Java对于这方面的优势很大。最重要的是代码量小了。于是针对这两天对Java的摸索,写一篇日志。记录一下针对ACM来说常用的Java方面的东西。
1、输入
首先要想输入需要先包括:
- import java.util.*;
我们需要其中的 Scanner类声明的对象来扫描控制台输入。
针对A+B来说:
- import java.util.*;
- public class Main
- {
- public static void main(String [] args)
- {
- Scanner cin = new Scanner(System.in);//对于Scanner 类声明对象cin用来扫描控制台输入
- int a = cin.nextInt();
- int b = cin.nextInt();
- System.out.println(a+b);//输出a+b
- cin.close();
- }
- }
读一个整数: int n = cin.nextInt(); 相当于 scanf("%d", &n); 或 cin >> n;
读一个字符串:String s = cin.next(); 相当于 scanf("%s", s); 或 cin >> s;
读一个浮点数:double t = cin.nextDouble(); 相当于 scanf("%lf", &t); 或 cin >> t;
读一整行: String s = cin.nextLine(); 相当于 gets(s); 或 cin.getline(...);
读一个大数: BigInteger c = cin.nextBigInteger();
不过需要注意的是它们没有像scanf一样有判断是否输入到结尾的功能。
这时候需要用一个Scanner类的方法hasnext()来判断是否输入到文件结尾;
例如POJ2506 这是一个针对大数处理的递推题。用Java就很好解决。
- import java.math.*;//大数类在Java.math里面,如果不包括的话声明不了大数对象
- import java.util.*;
- public class Main
- {
- public static void main(String[] args)
- {
- // TODO Auto-generated method stub
- /*sss*/
- BigInteger [] a=new BigInteger[255]; //大数数组
- a[0]=BigInteger.ONE; //初始化
- a[1]=BigInteger.ONE;
- a[2]=a[1].add(a[0].add(a[0]));
- for(int i=3;i<=250;i++)
- {
- a[i]=a[i-1].add(a[i-2].add(a[i-2]));
- }
- Scanner cin = new Scanner(System.in); //输入打开
- while(cin.hasNext())//判断是否文件结束
- {
- int n=cin.nextInt();
- System.out.println(a[n]); //输出
- }
- cin .close();//输入关闭
- }
- }
2、输出:
- public class Main {
- public static void main(String[] args)
- {
- // TODO Auto-generated method stub
- double d;
- d=9999.99999;
- System.out.format("%f",d); //9999.999990 没有回车
- System.out.format("%10.10f",d).println(); //9999.9999900000 输出回车
- System.out.format("%.4f",d).println(); //10000.0000 输出回车
- System.out.format("%3.4f",d).println(); //10000.0000 输出回车
- System.out.println(d); //输出当前变量 输出回车
- System.out.println(); // 输出回车
- System.out.printf("%f",d); //9999.999990 没有回车
- System.out.print(d); //9999.99999 没有回车
- }
- }
当然,输出的时候也有对小数位数处理的方法:
0代表当前位向后都是0就输出0占位,#代表若当前位向后都是0就不输出这些位上的数字。
- import java.text.DecimalFormat;
- public class Main {
- public static void main(String[] args) {
- double num = 9.999;
- DecimalFormat p3 = new DecimalFormat("#.00#");
- DecimalFormat p4 = new DecimalFormat("#.000#");
- DecimalFormat p5 = new DecimalFormat("#.0000#");
- System.out.println(p3.format(num));//输出9.999
- System.out.println(p4.format(num));//输出9.999
- System.out.println(p5.format(num));//输出9.9990
- }
- }
3、高精度
对于大数来说,Java提供了BigDecimal和BigInteger两个类,都包含在java.math.*里面。
BigInteger是大整形类,BigDecimal是大浮点型类。
这两个类产生的对象没有数据范围,只要你的电脑内存足够就可以。
下面用BigInteger举个例子:
- import java.math.BigInteger;
- public class Main {
- public static void main(String[] args)
- {
- int a=6,b=3;
- BigInteger x,y,z;
- x=BigInteger.valueOf(a); //转化赋值
- y=BigInteger.valueOf(b);
- System.out.println(x.add(y)); //加
- System.out.println(x.subtract(y)); //减
- System.out.println(x.multiply(y)); //乘
- System.out.println(x.divide(y)); //除
- System.out.println(x.mod(y)); //取余
- }
- }
4、进制转换
java一直就是作弊器一般的存在,就像它的进制转换函数一样:
- public class Main {
- public static void main(String[] args)
- {
- String string;
- int a=8;
- int x=2;
- string = Integer.toString(a, x); //把int型数据转换乘X进制数并转换成string型
- System.out.println(string);
- int b = Integer.parseInt(string, x);//把字符串当作X进制数转换成int型
- System.out.println(b);
- }
- }
5、字符串
Java中的String 和char数组是完全不同的两种东西。
String中的字符是不能在原位置改变的,要改变必须改变并保存到新的String里,或者保存到char 数组里再修改
- import java.io.*;
- import java.util.*;
- public class Main
- {
- public static void main(String[] args)
- {
- Scanner cin = new Scanner (new BufferedInputStream(System.in));
- String st = "abcdefg";
- System.out.println(st.charAt(0)); // st.charAt(i)就相当于st[i].
- char [] ch;
- ch = st.toCharArray(); // 字符串转换为字符数组.
- for (int i = 0; i < ch.length; i++){
- ch[i] += 1;//字符数组可以像C++ 一样操作
- }
- System.out.println(ch); // 输入为“bcdefgh”.
- st = st.substring(1); // 则从第1位开始copy(开头为第0位).
- System.out.println(st);
- st=st.substring(2, 4); //从第2位copy到第4位(不包括第4位)
- System.out.println(st);//输出“de”
- }
- }
java在acm中的一些应用相关推荐
- Java在ACM中的应用
Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge :) (2) ...
- acm c 和java如何取舍,ACM中使用JAVA语言的优缺点介绍
Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge :) (2) 对于熟 ...
- Java在ACM中的使用
1.基本框架 import java.oi.*; import java.util.* public class Main { public static vo ...
- Java在acm中的快速读入,多组读入,快速输出模板
代码 多组读入a+b problem问题 import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...
- ACM中Java使用总结
Java在ACM中的主要应用是大数类[个人见解].做个小总结,留作模板用. 类名默认为Main. 输入: 声明一个输入对象cin;Scanner cin=new Scanner(System.in); ...
- ACM中java的使用
ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...
- ACM中java的使用 (转)
ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入:格式为:Scanner c ...
- ACM中java快速入门
2019独角兽企业重金招聘Python工程师标准>>> ACM中java快速入门 附: Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特 ...
- acm java题_【转】ACM中java的使用
ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...
最新文章
- Python爬虫开发:https请求加密问题解决
- 素数 c语言 时间少,C语言判断素数怎么优化时间,1000000以内,不用代码,指点一下就好...
- 爱奇艺如何开启两指双击触发奇观功能
- 软件工程学习进度第五周暨暑期学习进度之第五周汇总
- C++异常处理之terminate函数和set_terminate()函数
- QQ服务器维护一般多久,QQ扩列怎么暂停服务了维护到什么时候结束
- matlab指派问题论文,数学建模指派问题论文.doc
- 基于SSM+MySQL+Bootstrap的停车场管理系统
- 周志华揭开机器学习本质的57张PPT
- 《职场人士必读的88个寓言》摘要
- 数据防泄密系统,你了解多少呢?
- 案件被终本后,如何继续执行?
- python中self的个人理解
- RDP、VNC、SPICE协议性能分析之网络带宽
- WPS 无法覆盖选中文字
- [CTF]2021长安战疫 WP
- 公司发布新闻宣传稿件是选新闻媒体网站还是自媒体?
- 2013年中华医院信息网络大会(郑州会议)资料汇总
- R语言——(五)、探索性数据分析
- 按键精灵 百度文字识别(百度ocr)OCRSpace文字识别
热门文章
- 一个关于fixed抖动的小bug
- 课时105.边框属性下(掌握)
- webpack联邦模块之remotes方法
- HDU3415 Max Sum of Max-K-sub-sequence
- 【线性代数公开课MIT Linear Algebra】 第二十三课 微分方程与exp(At)
- 第4章 maven依赖特性
- (转)会议期刊论文发表介绍(计算机科学领域)
- 再谈angularjs DI(Dependency Injection)
- flash调用js中的方法,让js传递变量给flash (兼容 IE FF) (转)
- linux odbc连接数据库失败,在Linux中使用RODBC连接到SQL Server时出错