Compare commits

...

1 Commits

Author SHA1 Message Date
ProgramLight f96297aa6e 上传文件至 '' 2023-04-23 12:34:32 +00:00
21 changed files with 595 additions and 0 deletions

22
LQ_008.java Normal file
View File

@ -0,0 +1,22 @@
package Course_Codes;
import java.util.Scanner;
//输入n和n-1个整数输出只出现1次的个数
public class LQ_008 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n,ans=0;//读入几个数
while(sc.hasNext()) {
n=sc.nextInt();
ans=0;
for(int i=0;i<n;i++) {
ans=ans^sc.nextInt();
}
System.out.print(ans);
}
}
}

15
_2的幂的判断.java Normal file
View File

@ -0,0 +1,15 @@
package Course_Codes;
import java.util.Scanner;
//判断一个整数n是否为2^x
public class _2的幂的判断 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
System.out.println((n&(n-1))==0?"YES":"NO");
}
}
}

23
n的约数的个数.java Normal file
View File

@ -0,0 +1,23 @@
package Course_Codes;
import java.util.Scanner;
public class n的约数的个数 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int n=sc.nextInt();
int ans=-0;
for(int i=1;i*i<=n;i++) {
if(i*i==n)
ans++;
else
ans+=2;
}
System.out.print(ans);
}
}
}

36
sky数判断.java Normal file
View File

@ -0,0 +1,36 @@
package Course_Codes;
import java.util.Scanner;
/*
* 小赵对进制特别感兴趣不光研究2进制3进制4进制5进制...突然有一次
* 他发现了一个特殊的数2992这个数它的十进制数表示其四位数字之和为
2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22同时它的十二进制数表示1894
其四位数字之和也为22啊哈真是巧啊
之后他就去翻书发现这种数叫sky
但是要判断这样的敛还是有点麻烦啊那么现在请你帮忙来判断任何一个十进制的四位数是不是Sky数吧
输入
输入含有一些小于100000000正整数如果为0则输入结束
输出
若n为Sky数则输出#n is a Sky Number..,否则输出#n is not a Sky Number..
每个结果占一行注意#n表示所读入的n值*/
public class sky数判断 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
if(Getsum(n,10)==Getsum(n,12)&&Getsum(n,10)==Getsum(n,16))
System.out.println(n+" is a Sky Number..");
else
System.out.println(n+" is not a Sky Number..");
}
public static int Getsum(int n,int r) {
int sum=0;
while(n>0) {
sum+=n%r;
n/=r;
}
return sum;
}
}

View File

@ -0,0 +1,50 @@
package Course_Codes;
import java.util.Scanner;
//3个数求最大值
public class 三个数求最大值 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
System.out.println("1:"+Get_Max1(a,b,c));
System.out.println("2:"+Get_Max2(a,b,c));
System.out.println("3:"+Get_Max3(a,b,c));
}
}
//系统类库
static int Get_Max3(int a, int b, int c) {
return Math.max(Math.max(a, b), c);
}
static int Get_Max2(int a, int b, int c) {
int max=a;
if(b>max)
max=b;
if(c>max)
max=c;
return max;
}
static int Get_Max1(int a,int b,int c) {
if(a>b) {
if(a>c)
return a;
else
return c;
}
else {
if(b>c)
return b;
else
return c;
}
}
}

21
两数交换.java Normal file
View File

@ -0,0 +1,21 @@
package Course_Codes;
import java.util.Scanner;
//两数交换
public class 两数交换 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int a=sc.nextInt();
int b=sc.nextInt();
//异或思想
a=a^b;
b=a^b;
a=a^b;
System.out.print("a="+a+" b="+b);
}
}
}

31
埃氏筛法.java Normal file
View File

@ -0,0 +1,31 @@
package Course_Codes;
import java.util.Arrays;
//要得到自然数n以内的全部素数必须把不大于根号n的所有素数的倍数剔除剩下的就是素数
public class 埃氏筛法 {
public static void main(String[] args) {
int n=10000;
boolean isprime[]=new boolean[n+1];
Arrays.fill(isprime, true);//假定全部都是素数
//判断特殊情况0 1
isprime[0]=false;
isprime[1]=false;
for(int i=2;i*i<=n;i++) {
if(isprime[i]==true)
for(int j=2;i*j<=n;j++) //是素数的2i,3i,4i....
isprime[i*j]=false;
}
int count=0;
for(int i=2;i<=n;i++) {
if(isprime[i]==true) {
count++;
System.out.println(i);
}
}
System.out.printf("从1到%d共有%d个素数", n,count);
}
}

39
大数.java Normal file
View File

@ -0,0 +1,39 @@
package Course_Codes;
import java.math.BigInteger;
public class 大数 {
public static void main(String[] args) {
String num="FF";//num当作16进制那么对应的就是10进制的255
System.out.println(BigInteger.ONE);
BigInteger a=new BigInteger("9527");
System.out.println("a:"+a);
//将num转化为二进制
BigInteger b=new BigInteger(num,16);
System.out.println("b的十六进制为"+b);
//将b转化为八进制
System.out.println("b的八进制为"+b.toString(8));
//将b转化为二进制
System.out.println("b的二进制为"+b.toString(2));
//a+b a.add(b)=9527+255
System.out.println("a+b="+a.add(b));
//a-b a.subtract(b)=9527-255 a的值没有变
System.out.println("a-b="+a.subtract(b));
//a*b
System.out.println("a*b="+a.multiply(b));
//a/b
System.out.println("a/b="+a.divide(b));
//a%b
System.out.println("a%b="+a.mod(b));
//a b的最大公约数
System.out.println("a b的最大公约数"+a.gcd(b));
//判断a是否为素数
System.out.println("a是否为素数"+a.isProbablePrime(10));
//a^b%p
BigInteger two=new BigInteger("2");
//10^2%13=9
System.out.println("10^2%13="+BigInteger.TEN.modPow(two, new BigInteger("13")));
}
}

27
子集输出.java Normal file
View File

@ -0,0 +1,27 @@
package Course_Codes;
//输出集合{1234}的所有子集
public class 子集输出 {
public static void main(String[] args) {
int [] a= {1,2,3,4};
for(int i=0;i<15;i++) {
System.out.print("{");
int n=i;//存储当前需要转换成二进制的i
int index=0;//当前是第几次除以2
while(n>0) {
if(n%2==1) {
if(n>2)
System.out.print(a[index]+",");
else
System.out.print(a[index]);
}
index++;
n/=2;
}
System.out.println("}");
}
}
}
/*不采用内置函数的是因为其只返回其值,没有补零*/

28
快读演示.java Normal file
View File

@ -0,0 +1,28 @@
package Course_Codes;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//基于 BufferedReader 的Java快读快读演示
public class 快读演示 {
public static void main(String[] args) {
//System.in:读取字节流 InputStreamReader字节流->字符流转换的一个桥梁
//BufferedReader类从字符输入流中带缓存功能的读取字符readline()按行读取字符串
//eg:
//37 65
//74 415
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line="";//每次从in里面读取一行字符串
try {
while((line=in.readLine())!=null){//只要还有行就继续读取每次读取一行放到line字符串里
String[] s=line.split(" +");//+表示会将多个空格看成一个空格
int a=Integer.parseInt(s[0]);
int b=Integer.parseInt(s[1]);
System.out.println(a+b);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

18
数位拆分.java Normal file
View File

@ -0,0 +1,18 @@
package Course_Codes;
import java.util.Scanner;
//小明只认识100以内的数如果是大于100的数他只会拿这个数的后两位重算
public class 数位拆分 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int sum=0;
sum=(a%100+b%100)%100;
System.out.print(sum);
}
}

24
整数翻转.java Normal file
View File

@ -0,0 +1,24 @@
package Course_Codes;
import java.util.Scanner;
//整数翻转
public class 整数翻转 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int n=sc.nextInt();//整数翻转
/* int sum=0;
while(n>0) {
//(输出法1)System.out.print(n%10);
sum=sum*10+n%10;//sum扩大10倍+尾数
n=n/10;
}
System.out.print(sum);//(输出法2) */
//法三系统类库
System.out.println(new StringBuffer(String.valueOf(n)).reverse().toString());
}
}
}

25
既约分数.java Normal file
View File

@ -0,0 +1,25 @@
package Course_Codes;
/*
* 本题为填空题只需要算出结果后在代码中使用输出语句将所填结果输出即可
如果一个分数的分子和分母的最大公约数是1这个分数称为既约分数
请问有多少个既约分数分子和分母都是1到2020之间的整数包括1和2020*/
public class 既约分数 {
public static void main(String[] args) {
int count=0;
int n=2020;
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
if(Gcd(i,j)==1) {
count++;
}
}
}
System.out.print(count);
}
//辗转相除法计算公式gcd(a,b) = gcd(b,a mod b)
public static int Gcd(int a,int b) {
//当b为0时a就是他的们间的最大公约数
return b==0?a:Gcd(b,a%b);
}
}

View File

@ -0,0 +1,41 @@
package Course_Codes;
import java.math.BigInteger;
public class 求100阶乘0的个数 {
public static void main(String[] args) {
int n=10;
Fun(n);
Fun2(n);
}
public static void Fun(int n) {
BigInteger a=new BigInteger("1");
for(int i=1;i<=n;i++) {
//a为BigInteger 类型因此不可用a*=i;
a=a.multiply(BigInteger.valueOf(i));
}
String s=a.toString();//s=100的值
System.out.println(s);
int count=0;
for(int i=s.length()-1;i>=0;i--) {
if(s.charAt(i)!='0')//找到第一个非0的数
break;
count++;//记录0的个数
}
System.out.println(count);
}
//数学方法
public static void Fun2(int n) {
int ans=0;
while(n>0) {
//因数中有1个5就有1个0即计算5的个数
ans=ans+n/5;
n=n/5;
}
System.out.println(ans);
}
}

View File

@ -0,0 +1,21 @@
package Course_Codes;
import java.util.Scanner;
//求一个十进制的二进制中含1的个数
public class 求二进制中含1个数 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int count=0;//n的二进制中1的个数
while(sc.hasNext()) {
int n=sc.nextInt();
while(n>0) {
n=n&(n-1);
count++;
}
System.out.println(count);
}
}
}

29
求最大公约数.java Normal file
View File

@ -0,0 +1,29 @@
package Course_Codes;
import java.util.Scanner;
//求两个数的最大公约数
public class 求最大公约数 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println("欧几里得:"+Gcd1(a,b));
System.out.println("递归:"+Gcd(a,b));
}
//Gcd=最大公约数
public static int Gcd(int a,int b) {
return b==0?a:Gcd(b,a%b);
}
public static int Gcd1(int a,int b) {
while(b>0) {
int temp=a%b;
a=b;
b=temp;//Gcd(a,b)=>Gcd(b,a%b)
}
return a;
}
}

34
穷举.java Normal file
View File

@ -0,0 +1,34 @@
package Course_Codes;
//打印一个实心圆和一个空心圆
public class 穷举 {
public static void main(String[] args) {
int r=16;
sxy(r);
kxy(r);
}
static void sxy(int r) {
for(int y=-r;y<=r;y+=2) {
for(int x=-r;x<=r;x++) {
if(x*x+y*y<=r*r)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
System.out.println();
}
static void kxy(int r) {
for(int y=r;y>=-r;y=y-2) {
int x=(int)Math.round(Math.sqrt(r*r-y*y));
for(int i=1;i<=r-x;i++)
System.out.print(" ");
System.out.print("*");
for(int i=1;i<=2*x;i++)
System.out.print(" ");
System.out.println("*");
}
}
}

25
素数的判断.java Normal file
View File

@ -0,0 +1,25 @@
package Course_Codes;
import java.util.Scanner;
public class 素数的判断 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int n=sc.nextInt();
System.out.println(isprime(n)?"Yes":"No");
}
}
public static Boolean isprime(int n) {
//排除特殊情况0 1
if(n<1)
return false;
//i*i<n 无需从2n全部遍历只需遍历其一半即可
for(int i=2;i*i<n;i++)
if(n%i==0)
return false;
return true;
}
}

View File

@ -0,0 +1,31 @@
package Course_Codes;
import java.math.BigDecimal;
public class 计算PI小数点后n位 {
public static void main(String[] args) {
int n=1000;
PI(n);
}
public static void PI(int n) {
BigDecimal qian=BigDecimal.ZERO;//前半部分
BigDecimal hou=BigDecimal.ZERO;//后半部分
BigDecimal ans=BigDecimal.ZERO;//最后存放pi
int jd=1000;//精确到小数点后1000位
for(int i=0;i<n;i++) {
BigDecimal de5=new BigDecimal("1").divide(new BigDecimal(2*i+1+"")
.multiply(new BigDecimal("5").pow(2*i+1)),jd,BigDecimal.ROUND_DOWN);
BigDecimal de239=new BigDecimal("1").divide(new BigDecimal(2*i+1+"")
.multiply(new BigDecimal("239").pow(2*i+1)),jd,BigDecimal.ROUND_DOWN);
BigDecimal fh=new BigDecimal((i%2==0?1:-1)+"");//判断正负号
qian=qian.add(de5.multiply(fh));
hou=hou.add(de239.multiply(fh));
}
ans=new BigDecimal("16").multiply(qian).subtract(new BigDecimal("4").multiply(hou));
System.out.println(ans.toString());
}
}

View File

@ -0,0 +1,34 @@
package Course_Codes;
import java.util.Scanner;
//身份证号合理性验证
public class 身份证号合理性验证 {
public static void main(String[] args) {
String idCard="";//存储身份证尾号可能出现X因此用String
//身份证各数字权值7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
int [] w= {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
//权值对11取余的值
String [] last= {"1","0","X","9","8","7","6","5","4","3","2"};
System.out.println("Please input your ID:");
Scanner sc=new Scanner(System.in);
idCard =sc.nextLine();
//截取身份证号前17位
String id_17=idCard.substring(0,17);
int sum=0;
for(int i=0;i<id_17.length();i++) {
//将String类型的身份证号转化为整型
int n=Integer.parseInt(id_17.substring(i,i+1));//法2:charAt(i-'0');
sum=sum+n*w[i];
}
System.out.printf("sum=%d,sum=%%11=%d\n",sum,sum%11);
if(idCard.substring(17,18).equals(last[sum%11]))
System.out.println("Yes");
else
System.out.print("No");
}
}

21
进位模拟.java Normal file
View File

@ -0,0 +1,21 @@
package Course_Codes;
//输入两个9位以内的数相加求其有多少进位
import java.util.Scanner;
public class 进位模拟 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int count=0,temp=0;//count统计temp存放进位
for(int i=0;i<9;i++) {
temp=(a%10+b%10)>=10?1:0;
count+=temp;
a/=10;
b/=10;
}
System.out.print(count);
}
}