日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ACM的java 傻瓜式教学

發布時間:2025/7/25 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ACM的java 傻瓜式教学 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于eclipse的配置 我感覺我講不清【逃

?

?

開始

從配好之后講起

文件名命名為Main.java【接下來幾行解釋為什么要起這個名字

注意第七行那里(為了方便復制我沒有加行號)的類的名字必須與文件名相同

但是你會看到各大oj的FAQ上有一些要求

比如hdu上有這個

然后貌似我今年去鞍山打區域賽的時候也有這個要求 所以就不要倔吧 就起這個名

?

“框架”

然后大概所謂“框架”就是這樣

import java.util.*; import java.io.*; import java.math.*; import java.text.*;public class Main
{
public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));/*program*/} }

eclipse非常方便就是如果你少import了什么庫它會給你提示或者自動給你加

所以再也沒有之前剛開始學c學c++時 調用函數卻鬧不清頭文件的煩惱

?

之后默認的話是F11就編譯運行了~

?

函數

列了幾個我個人覺得比較實用的函數:

BigDecimal add(BigDecimal augend) :加法

BigDecimal subtract(BigDecimal subtrahend) :減法

BigDecimal divide(BigDecimal divisor) :除法  

BigDecimal pow(int n) :乘冪

BigDecimal multiply(BigDecimal multiplicand) :乘法

int compareTo(BigDecimal number):比較兩個數 比如a.compareTo(b) a<b返回-1【<0】 a==b返回0 a>b返回1【>0】 很好記

public String substring(int beginIndex):相當于刪掉字符串的前幾位

public String substring(int beginIndex,int length):相當于取字符串中間一段 (注意第二個參數是長度而不是截止位置的下標)

BigDecimal stripTrailingZeros(BigDecimal number):對于一個高精度小數?從表示形式上移除所有尾部的無用零

String toPlainString(BigDecimal number):高精度小數轉字符串(進而可以方便地使用字符串處理函數)

?

實例

講多無謂 上幾個例子自己寫寫就懂了

hdu1042 大數階乘?

import java.util.*; import java.io.*; import java.math.BigInteger; import java.text.*;public class Main {public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));int n;while(cin.hasNextInt())    //類似于以前判EOF的方式 {int a = cin.nextInt();  //整數讀入方法if(a == 0)         //特判0! = 1 {System.out.println("1");continue;}BigInteger ans = BigInteger.valueOf(a);  //valueOf()可以把數轉成各個類對應的類型for(int i = 2; i < a; i++){ans = ans.multiply(BigInteger.valueOf(i)); }System.out.println(ans);}} }

個人覺得就像c++中類的成員函數的各種調用

?

?

hdu 2054

import java.util.*; import java.io.*; import java.math.*; import java.text.*;public class Main {public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));BigDecimal a, b;while(cin.hasNext()){a = cin.nextBigDecimal();b = cin.nextBigDecimal();if(a.compareTo(b) == 0)System.out.println("YES");elseSystem.out.println("NO");}} }

?

hdu 1047?

import java.util.*; import java.io.*; import java.math.*; import java.text.*;public class Main {public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));int T;T = cin.nextInt();BigInteger a, b;BigInteger zero = new BigInteger("0");for(int i = 0; i < T; i++)  //本來我習慣寫while(T--)的 不過這里面好像不行 {a = zero;while(true){b = cin.nextBigInteger();if(b.compareTo(zero) == 0)break;a = a.add(b);}System.out.println(a);if(i < T-1)System.out.printf("%n");//這里是特地這么寫的 ‘%n‘是跨平臺的換行符 這樣可以避免那個關于\r和\n的糾結問題//也可以寫成System.out.println(""); }} }

?

hdu 1063

import java.util.*; import java.io.*; import java.math.*; import java.text.*;public class Main {public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));while(cin.hasNextBigDecimal()){BigDecimal ans = new BigDecimal("1");BigDecimal a;int n;BigDecimal one = new BigDecimal("1");String anss;a = cin.nextBigDecimal();n = cin.nextInt();for(int i = 0; i < n; i++){ans = ans.multiply(a);}ans = ans.stripTrailingZeros();anss = ans.toPlainString();if(ans.compareTo(one) < 0){anss = anss.substring(1);System.out.println(anss);} else{System.out.println(anss);}}} } 關于stripTrailingZeros()
舉個例子 不加這句話的話 如果運算1.1 + 2.9 結果會輸出4.0
加這個函數之后它就變成4了
這就是這個函數的作用

關于小數的最簡形式
0.1 需要改成 .1
雖然覺得怪怪的 不過在計算器上輸入“.1”它確實會識別出來
下面還有一道類似的題目


hdu 1316
import java.util.*; import java.io.*; import java.math.*; import java.text.*;public class Main {public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));BigInteger fibo[] = new BigInteger[1010];fibo[0] = new BigInteger("1");fibo[1] = new BigInteger("2");for(int i = 2; i < 1000; i++)fibo[i] = fibo[i-1].add(fibo[i-2]);BigInteger a, b;BigInteger zero = new BigInteger("0");while(true){a = cin.nextBigInteger();b = cin.nextBigInteger();if(b.compareTo(zero) == 0)break;int ans = 0;boolean flag = false;  //這里面是booleanfor(int i = 0; i < 1000; i++){if(!flag && fibo[i].compareTo(a) >= 0)flag = true;if(flag && fibo[i].compareTo(b) > 0)break;if(flag)ans++; }System.out.println(ans);}} }

這個程序我也是模仿別人的寫法的

然后我就特別好奇數組那里為毛兩次new

然后抱“老頭”(一個道骨仙風的世外高人)大腿之后才弄明白

對于第一個new:BigInteger fibo[] = new BigInteger[1010];

可以理解為C++中的 int *fibo[] 即,java中那種寫法它實際上只是為1010個指針分配的空間 而不像c++中 int fibo[1010] 就已經為數據開辟出一片空間了

所以第二個new:fibo[0] = new BigInteger("1");

之所以可以這么寫就比較自然了吧?

當然也可以不這么寫?

fibo[0] = BigInteger.valueOf(1); 這種寫法也是闊儀滴

?

hdu 1715

import java.util.*; import java.io.*; import java.math.*; import java.text.*;public class Main {public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));BigInteger fibo[] = new BigInteger[1010];fibo[1] = new BigInteger("1");fibo[2] = new BigInteger("1");for(int i = 3; i < 1010; i++)fibo[i] = fibo[i-1].add(fibo[i-2]);int T;T = cin.nextInt();for(int i = 0; i < T; i++){int n;n = cin.nextInt();System.out.println(fibo[n]); } } }

hdu 1753
import java.util.*; import java.io.*; import java.math.*; import java.text.*;public class Main {public static void main(String[] args){ Scanner cin = new Scanner(new BufferedInputStream(System .in));BigDecimal a, b;while(cin.hasNextBigDecimal()){a = cin.nextBigDecimal();b = cin.nextBigDecimal();BigDecimal ans = a.add(b);ans = ans.stripTrailingZeros();String anss = ans.toPlainString();BigDecimal one = new BigDecimal("1");if(ans.compareTo(one) < 0){anss = anss.substring(1);System.out.println(anss);}else{System.out.println(anss);}}} }

刷完這些題之后對這里面最基本的操作就應該沒什么問題辣~

?

轉載于:https://www.cnblogs.com/dishu/p/4143822.html

總結

以上是生活随笔為你收集整理的ACM的java 傻瓜式教学的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。