ACM中的java的使用;

java大法好,退C保平......開玩笑的;php

一、頭文件:

import java.math.*; // 包含大數類的包 
  
import java.util.*;  // 包含輸入頭的包 

二、程序主體,以及類名必須爲Main:

public class Main{ public static void main(String args[]){ Scanner cin = newScanner(System.in);        // 輸入必備句 
 } } 

三、有關函數:

運算類:

//d爲int型,a,b,c都爲大數 
c=a.add(b);             // 相加 
c=a.subtract(b);       // 相減 
c=a.multiply(b);          // 相乘 
c=a.divide(b);        // 相除取整 
c=a.gcd(b);          // 最大公約數 
c=a.remainder(b);   // 取餘 
c=a.mod(b);         // a mod b 
c=a.abs();           // a的絕對值 
c=a.negate();        // a的相反數 
c=a.pow(d);           // a的b次冪 d爲int型 
c=a.max(b);           // 取a,b中較大的 
c=a.min(b);                // 取a,b中較小的 
d=a.compareTo(b);      // 比較a與b的大小 d=-1小於 d=0等於 d=1大於 d爲int型 
a.equals(b);            // 判斷a與b是否相等 相等返回true 不相等返回false 

類型轉換類:

d=a.intValue();      // 將大數a轉換爲 int 類型賦值給 d 
e=a.longValue();     // 將大數a轉換爲 long 類型賦值給 e 
f=a.floatValue();    // 將大數a轉換爲 float 類型賦值給 f 
g=a.doubleValue();   // 將大數a轉換爲 double 類型賦值給 g 
s=a.toString();      // 將大數a轉換爲 String 類型賦值給 s 
<span style="color:#ff0000;">s=a.toPlainString();  //將大數a轉換爲String類型賦值給s,且不表示爲科學計數法</span> 
a=BigInteger.valueOf(e);  // 將 e 以大數形式賦值給大數 a e只能爲long或int 
a=newBigInteger(s, d);  // 將s數字字符串以d進制賦值給大數a若是d=s字符數字的進制則等同於將數字字符串以大數形式賦值給大數a 

進制轉換類:

String st = Integer.toString(num, base); //把int型num當10進制的數轉成base進制數存入st中 (base <= 35). 
int num = Integer.parseInt(st, base); //把st當作base進制,轉成10進制的int 
(parseInt有兩個參數,第一個爲要轉的字符串,第二個爲說明是什麼進制). BigInter m = new BigInteger(st, base); // st是字符串,base是st的進制. 
BigInteger a; int b; Stringc; a=cin.nextBigInteger(b);   //以b進制讀入一個大數賦值給a 
c=a.toString(b);          // 將大數a以b進制的方式賦給字符串c 
a=newBigInteger(c, b);  //把c 當作「b進制「轉爲十進制大數賦值給a 

 例:hdu1250  http://acm.hdu.edu.cn/showproblem.php?pid=1250java

題目大意:斐波那契數列;ide

import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); while(cin.hasNext()){ int n=cin.nextInt(); BigInteger ans[]=new BigInteger[10000]; //BigInteger tmp1=BigInteger.valueOf(1); //BigInteger tmp2=BigInteger.valueOf(1);
            ans[1]=ans[2]=ans[3]=ans[4]=BigInteger.ONE; for(int i=5;i<=n;i++) { ans[i]=ans[i-1].add(ans[i-2]).add(ans[i-3]).add(ans[i-4]); } System.out.println(ans[n]); } } }

 例:hdu1753  http://acm.hdu.edu.cn/showproblem.php?pid=1753函數

題目大意:兩個大數浮點數相加;spa

import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner cin =new Scanner(System.in); while(cin.hasNext()){ BigDecimal a,b; while(cin.hasNext()){ a=cin.nextBigDecimal(); b=cin.nextBigDecimal(); System.out.println(a.add(b).stripTrailingZeros().toPlainString()); } } } }

PS: 有用java水了一道,這裏注意下要求最簡形式,可能會出現4.0或者1e5等形式,因此用stripTrailingZeros()函數去除末尾0,用toPlainString()函數轉成廣泛計數法輸出。code

相關文章
相關標籤/搜索