目录
1、输入一维数组
package acm;
import java.util.Scanner;
public class zimeci1003 {
public static void main(String[] args) {
int a=0,b=0,n=0;//定义2个整型变量
Scanner sc=new Scanner(System.in);
while(sc.hasNext())//循环读入若干组数据
{
n=sc.nextInt();//几组数据
if(n==0) break;//输入0,结束程序
int sum=0;//记录累加
for(int i=1;i<=n;i++)
{
sum=sum+sc.nextInt();//循环n次,每次从键盘录入一个整数。累加到sum
}
System.out.println(sum);
}
}
}
2、输入二维数组
package acm;
import java.util.Scanner;
public class zimeoj {
public static void main(String[] args) {
int t=0,n=0;//有t组测试数据,每组有n个
Scanner sc=new Scanner(System.in);
while(sc.hasNext())//循环读入若干组数据
{
t=sc.nextInt();//读入有几组测试数据
for(int i=1;i<=t;i++)
{
n=sc.nextInt();//每组有n个数据
int sum=0;//记录累加
for(int j=1;j<=n;j++)
{
sum=sum+sc.nextInt();//循环n次,每次从键盘录入一个整数。累加到sum
}
System.out.println(sum);
}
System.out.println();
}
}
}
3、BufferedReader(new InputStreamReader(System.in));//快读方式
package acm;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
public class zimeoj1000 {
public static void main(String[] args) {
int a=0,b=0,n=0;//定义2个整型变量
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));//快读
//System.in读取的字节流
//InputStreamReader字节流->字符流转换的一个桥梁
//BufferedReader类从字符输入流中带缓存功能的读取字符
Scanner sc=new Scanner(System.in);
while(sc.hasNext())//循环读入若干组数据
{
n=sc.nextInt();//几组数据
for(int i=1;i<=n;i++)
{
a=sc.nextInt();
b=sc.nextInt();
System.out.println(a+b);
}
}
}
}
4、正则表达式语法
package acm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//快读方式,提高效率
public class zimeojfast {
public static void main(String[] args) {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));//快读
//System.in读取的字节流
//InputStreamReader字节流->字符流转换的一个桥梁
//BufferedReader类从字符输入流中带缓存功能的读取字符 提供readLine()按行读取字符
String line="";//每次从in里面去读取一行字符串
try
{
while((line=in.readLine())!=null)//只要还有行就继续读取,每次读一行就放到line字符串里
{
String[] s=line.split(" +");//1 2, 1 2 多个空格 分隔以后的字符串数组
//正则表达式语法
int a=Integer.parseInt(s[0]);
int b=Integer.parseInt(s[1]);
System.out.println(a+b);
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
5、输入一个数,判断是不是处于斐波那契数列
package acm;
import java.util.Scanner;
//输入一个数,判断是不是处于斐波那契数列
public class 打表 {
//fib 46项超过int 93项超过long
public static void main(String[] args) {
/*
long[] fib=new long[61];
fib[1]=1;
fib[2]=1;
for(int i=3;i<fib.length;i++)
{
fib[i]=fib[i-1]+fib[i-2];
}
for(int i=1;i<fib.length;i++)
{
System.out.printf("fib第%02d项:",i);
if(fib[i]%3==0) System.out.printf("\t被3整除");
if(fib[i]%4==0) System.out.printf("\t被4整除");
if(fib[i]%12==0) System.out.printf("\t被12整除\n");
System.out.println();
}
// 1 4 8 12 16 被3整除,可能每4项都能整除3
//每6项能被4整数 每12项能被12整除
*/
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
int n=sc.nextInt();
if(n%12==0) System.out.println("整除12");
else if(n%4==0) System.out.println("整除3");
else if(n%6==0) System.out.println("整除4");
else System.out.println("NO");
}
}
}
6、大整数问题 100!尾部有多少0
方法一: BigInteger.valueOf(i)把i转变为大整数
方法二:转化为数学问题 100!后面有几个0 ==100!的式子里面有几个5
public static void main(String[] args) {
String num="FF";//num16进制,那么对应的是10进制255
System.out.println(BigInteger.ONE);
//实例化一个大数对象
BigInteger a=new BigInteger("9527");//9527为字符串,把9527作为参数,放在构造函数里,就可以实例化得到大数的对象、
System.out.println(a);//打印的字符串
//用另一个实例化一个大数对象
BigInteger b=new BigInteger(num,16);//把字符串当作16进制
System.out.println(b);//输出的是十进制
System.out.println(b.toString(8));//转化为八进制377
System.out.println(b.toString(2));//转化为二进制11111111
System.out.println(a.add(b));//加 9782
System.out.println(a.subtract(b));//减去9272
System.out.println(a.multiply(b));//乘2429385
System.out.println(a.divide(b));//除37
System.out.println(a.mod(b));//取余92
System.out.println(a.gcd(b));//求最大公约数1
System.out.println(a);
System.out.println(a.isProbablePrime(1));//判断是不是素数
BigInteger two=new BigInteger("2");
System.out.println(BigInteger.TEN.modPow(two, new BigInteger("13")));//10^2%13=9
}
package acm;
import java.math.BigInteger;
public class 大整数 {
//100!尾部有多少0
public static void main(String[] args) {
int n=100;
f1(100);
f2(5);
}
public static void f2(int n)//方法二 转化为数学问题 100!后面有几个0 ==100!的式子里面有几个5
{
int ans=0;
while(n>0)
{
ans=ans+n/5;
n=n/5;
}
System.out.println(ans);
}
public static void f1(int n)//方法一
{
BigInteger a=new BigInteger("1");
for(int i=1;i<=n;i++)
{
a=a.multiply(BigInteger.valueOf(i));//BigInteger.valueOf(i)把i转变为大整数
}
String s=a.toString();//Arrays的toString方法是返回指定数组内容的字符串表示形式
System.out.println(s);
int count=0;
for(int i=s.length()-1;i>=0;i--)
{
if(s.charAt(i)!='0') break;//找到第一个非0的数
count++;//记录0的个数
}
System.out.println(count);
}
}
7、等差数列
第二各代码片段:转化为最大公约数问题
public class 等差数列 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//while(sc.hasNext())
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<a.length;i++)
{
a[i]=sc.nextInt();
}
//因为数项无规则,所以要排序
Arrays.sort(a);
//求相邻项的差,因为是4个数,所以差有3个
int b[]=new int[n-1];
for(int i=1;i<b.length;i++)
{
b[1]=a[i+1]-a[i];
}
//求公因子
int gg=b[0];
for(int i=1;i<b.length;i++)
{
gg=gcd(gg,b[0]);//求最大公因子
}
if(b[0]==0)//如果出现差为0的情况,最短的项数就是给出的数组的项数
{
System.out.println(n);
}
else {
System.out.println();
}
}
private static int gcd(int a,int b)//求最大公因子
{
return b==0?a:gcd(b,a%b);
}
}
//转化为最大公约数问题
public class 等差数列 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] a = new int[n];
for(int i = 0;i<n;i++) {
a[i] = scan.nextInt();
}//输入整数
Arrays.sort(a);//排序
int max = a[n-1];//最后数项
int min = a[0];//第一个数
int d = Integer.MAX_VALUE;//最小公差
//Integer.MIN_VALUE 是 java.lang 包的 Integer 类中的一个常量,指定存储 Java 中任何整数变量的最小可能值。
//实际值是:-2147483648
//输入n个数,所以有n-1个差
for(int i = 0;i<n-1;i++) {
if(d>a[i+1]-a[i]) {
d = a[i+1]-a[i];//最小公差
}
}
if(d==0){//如果公差为0,输出n
System.out.print(n);
return;
}
System.out.print((max-min)/d+1);
}
}