import java.io.*;
import java.util.*;
import java.math.BigInteger; //java大数头文件;
public class Main
{
public static void main(String args[])
{
Scanner cin=new Scanner(System.in); //最先定义输入符为cin;
int n=cin.nextInt(); //定义一个整数并输入;
BigInteger a=cin.nextBigInteger(); //定义一个大数并输入;//注意括号;
BigInteger b=cin.nextBigInteger();
while(n-->0) //循环n次,也可以用for循环;
{
BigInteger ans=BigInteger.ZERO;
ans=a.add(b); //a+b;
ans=a.substract(b); //a-b;
ans=a.multiply(b); //a*b;
ans=a.divide(b); //a/b;
ans=a.mod(b); //a%b;
//如果你想让a与一个常数进行操作,那么你要先对它进行变量化;
BigInteger x=new BigInteger("4");
ans=a.mod(x);
int flag=a.compareTo(b); //比较函数:flag==-1-->小于、flag==0-->等于、flag==1-->大于;
}
while(cin.hasNext()) //一直循环;//注意括号;
{
System.out.println(); //输出空行;输出函数,自动换行;
System.out.println(a+"+"+b+"="+ans); //这里的加号代表连接;
System.out.println(""); //输出函数,双引号内为要输出的字符串;
}
}
}
例题:nyoj168 卡特兰数
代码:
package helloo;
import java.io.*;
import java.math.BigInteger;
import java.math.BigDecimal;
import java.util.*;
public class helloo
{
public static void main(String args[])
{
BigInteger a[]=new BigInteger[110];
a[0]=new BigInteger("1");
a[1]=new BigInteger("1");
a[2]=new BigInteger("2");
a[3]=new BigInteger("5");
for(int i=4;i<=100;i++)
{
int x;
x=4*i-2;
BigInteger t=BigInteger.valueOf(x);
a[i]=t.multiply(a[i-1]);
x=i+1;
t=BigInteger.valueOf(x);
a[i]=a[i].divide(t);
}
Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{
int n=cin.nextInt();
if(n==-1)
break;
System.out.println(a[n]);
}
}
}
java 上编译可以通过,不过提交时要修改一下 helloo--->Main;删除第一行;
java大数模板
/****多组大数相加****/
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1047
代码:
import java.io.*;
import java.util.*;
import java.math.BigInteger;
public class Main
{
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
for(int i=1; i<=n; i++)
{
BigInteger ans=BigInteger.ZERO;
BigInteger m=cin.nextBigInteger();
while(cin.hasNext())
{
if(m.equals(BigInteger.ZERO))
break;
ans=ans.add(m);
m=cin.nextBigInteger();
}
System.out.println(ans);
if(i!=n)
System.out.println();
}
}
}
/****大数取余****/
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212
import java.io.*;
import java.util.*;
import java.math.BigInteger;
public class Main
{
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{
BigInteger a=cin.nextBigInteger();
BigInteger b=cin.nextBigInteger();
BigInteger ans=a.mod(b);
System.out.println(ans);
}
}
}
/****Chinese Girls' Amusement****/
链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1313
代码:
import java.io.*;
import java.util.*;
import java.math.BigInteger;
public class Main
{
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{
BigInteger x=new BigInteger("1");
BigInteger y=new BigInteger("2");
int n=cin.nextInt();
while(n-->0)
{
BigInteger m=cin.nextBigInteger();
if(m.mod(y).equals(BigInteger.ZERO))
{
m=m.divide(y);
if(m.mod(y).equals(BigInteger.ZERO))
{
m=m.subtract(x);
System.out.println(m);
}
else
{
m=m.subtract(y);
System.out.println(m);
}
}
else
{
m=m.subtract(x).divide(y);
System.out.println(m);
}
if(n>0)
System.out.println();
}
}
}
}
这一道题給坑惨了,这是一道找规律的题目,因为没有找到正确的规律;
规律就是如果n为奇数,k=(n-1)/2; 偶数:再判n/2是奇数 k=n/2-2,偶数k=n/2-1;
加:hdu 1002A+B Problem II http://acm.hdu.edu.cn/showproblem.php?pid=1002
减:百炼2736 http://bailian.openjudge.cn/practice/2736/
乘:百炼2980 http://bailian.openjudge.cn/practice/2980/
除:百炼2737 http://bailian.openjudge.cn/practice/2737/
以下为转载:http://blog.youkuaiyun.com/niushuai666/article/details/6972991;
大数阶乘
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28
代码如下:
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main
{
publicstatic void main(String args[])
{
Scannercin = new Scanner(System.in);
intn = cin.nextInt();
BigIntegerans = BigInteger.ONE;
for(inti = 1; i <= n; ++i)
ans= ans.multiply(BigInteger.valueOf(i));
System.out.println(ans);
}
}
棋盘覆盖
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=45
代码如下:
import java.math.BigInteger;
import java.util.*;
import java.io.*;
public class Main
{
publicstatic void main(String args[])
{
Scannerin = new Scanner(System.in);
inttest = in.nextInt();
while(test--> 0)
{
intn;
n= in.nextInt();
BigIntegera = new BigInteger("4");
for(inti = 1; i < n; ++i)
a= a.multiply(BigInteger.valueOf(4));
System.out.println(a.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)));
}
}
}
比较大小
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=73
代码如下:
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main
{
publicstatic void main(String args[])
{
Scannercin = new Scanner(System.in);
while(cin.hasNext())
{
BigIntegera = cin.nextBigInteger();
BigIntegerb = cin.nextBigInteger();
if(a.equals(BigInteger.ZERO)&& b.equals(BigInteger.ZERO))
break;
intflag = a.compareTo(b);
if(flag== -1)
System.out.println("a<b");
elseif(flag == 0)
System.out.println("a==b");
else
System.out.println("a>b");
}
}
}
大数加法
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=103
代码如下:
import java.math.BigInteger;
import java.util.*;
import java.io.*;
public class Main
{
publicstatic void main(String args[])
{
Scannerin = new Scanner(System.in);
intn = in.nextInt();
for(inti = 1; i <= n; ++i)
{
BigIntegera = in.nextBigInteger();
BigIntegerb = in.nextBigInteger();
BigIntegerans = a.add(b);
System.out.println("Case" + i + ":");
System.out.println(a+ " + " + b + " = " +ans);
}
}
}
递推求值
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=114
代码如下:
import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main
{
publicstatic void main(String args[])
{
Scannercin = new Scanner(System.in);
BigIntegera[] = new BigInteger[100];
while(cin.hasNext())
{
for(inti = 0; i <= 2; ++i)
a[i]= cin.nextBigInteger();
for(inti = 3; i <= 99; ++i)
a[i]= a[i - 1].add(a[i - 2]).add(a[i - 3]);
System.out.println(a[99]);
}
}
}
高精度幂
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=155
代码如下:
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
public class Main
{
publicstatic void main(String args[])
{
Scannercin = new Scanner(System.in);
while(cin.hasNext())
{
BigDecimalans = cin.nextBigDecimal();
intn = cin.nextInt();
Stringres = ans.pow(n).stripTrailingZeros().toPlainString();
//整数去掉小数点和后面的0
if(res.startsWith("0"))//去掉前导0
{
res= res.substring(1);
}
System.out.println(res);
}
}
}