版权声明:转载请注明出处 https://blog.csdn.net/Hpuer_Random/article/details/83663194
HDU 1002 A + B Problem II
直接写就好了,不过格式有些麻烦
import java.math.*;
import java.util.*;
public class HDU1002{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int t = cin.nextInt();
int num = 1;
int x=0;
while(t>0){
if(x!=0) System.out.println("");
else x=1;
BigInteger a = cin.nextBigInteger();
BigInteger b = cin.nextBigInteger();
System.out.println("Case "+num+":");
System.out.println(a+" + "+b+" = "+a.add(b));
// System.out.println("Case "+num+":\n"+a+" + "+b+" = " +a.add(b));
//写着一句话Wa了好多次,我现在有些怀疑println和"\n"不一样。
num++;
t--;
}
}
}
POJ 2506 Tiling
推出公式:
不过JAVA写大数还真是方便 因为懒
import java.util.*;
import java.math.*;//得有这个库
public class Main{
public static void main(String[] agrs){
Scanner cin = new Scanner(System.in);
BigInteger[] a = new BigInteger[300];//定义大数数组
a[0] = BigInteger.ONE;//初始化
a[1] = BigInteger.ONE;//初始化
a[2] = a[1].add(a[0].add(a[0]));
for(int i=3;i<=299;i++)
a[i] = a[i-1].add(a[i-2].add(a[i-2]));
while(cin.hasNext()){
int n = cin.nextInt();
System.out.println(a[n]);
}
}
}
HDU 1042 N!
求最大是 10000! 肯定得用大数来解决
import java.math.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
BigInteger n;
while(cin.hasNext()){
int x = cin.nextInt();
n = BigInteger.ONE;//初始化为1
for(int i=1;i<=x;i++)
n = n.multiply(BigInteger.valueOf(i));
System.out.println(n);
}
}
}
HDU 1047 Integer Inquiry
多个大数相加,不过哦需要注意一下输入输出格式,
n组数据,每两个输出之间有一个空行
import java.math.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
while(n-->0){
BigInteger ans = BigInteger.ZERO;
BigInteger x;
while(cin.hasNextBigInteger()){
x = BigInteger.ZERO;
x = cin.nextBigInteger();
if(!x.equals(BigInteger.valueOf(0)))
ans = ans.add(x);
else{
System.out.println(ans);
if(n!=0)
System.out.println("");
break;
}
}
}
System.gc();
}
}
HDU 1715 大菲波数
import java.math.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
BigInteger[] a;
a = new BigInteger[2000];
a[0] = BigInteger.ZERO;
a[1] = BigInteger.ONE;
for(int i=2;i<1005;i++)
a[i] = a[i-1].add(a[i-2]);
int n = cin.nextInt();
while(n-->0){
int i = cin.nextInt();
System.out.println(a[i]);
}
}
}
HDU 1063 Exponentiation
浮点数的幂,需要注意输出格式
0.123 输出为 .123
import java.math.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
BigDecimal a = cin.nextBigDecimal();//输入大浮点数
int n = cin.nextInt();
String res = a.pow(n).stripTrailingZeros().toPlainString();//去掉整数后的小数点和多余的0
if(res.startsWith("0"))
res = res.substring(1); //去掉前导0
System.out.println(res);
}
}
}
HDU 1753 大明A+B
大浮点数相加
import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
BigDecimal a,b;
while(cin.hasNext()){
a = cin.nextBigDecimal();
b = cin.nextBigDecimal();
String res = a.add(b).stripTrailingZeros().toPlainString();
System.out.println(res);
}
}
}
HDU 1316 How Many Fibs?
求区间【a,b】中有多少个斐波那契数
import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
BigInteger[] a = new BigInteger[3000];
a[0] = new BigInteger("1");
a[1] = new BigInteger("1");
for(int i=2;i<=500;i++)
a[i] = a[i-1].add(a[i-2]);
BigInteger x, y;
while(cin.hasNext()){
x = cin.nextBigInteger();
y = cin.nextBigInteger();
if(x.compareTo(BigInteger.ZERO)==0 && y.compareTo(BigInteger.ZERO)==0) break;
int ans = 0;
for(int i=1;i<=500;i++){
if(x.compareTo(a[i]) <= 0 && y.compareTo(a[i]) >= 0) ans++;
if(y.compareTo(a[i]) < 0) break;
}
System.out.println(ans);
}
}
}