Compare commits
1 Commits
main
...
CourseCode
Author | SHA1 | Date |
---|---|---|
ProgramLight | f96297aa6e |
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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")));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package Course_Codes;
|
||||
//输出集合{1,2,3,4}的所有子集
|
||||
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("}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
/*不采用内置函数的是因为其只返回其值,没有补零*/
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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("*");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 无需从2——n全部遍历,只需遍历其一半即可,
|
||||
for(int i=2;i*i<n;i++)
|
||||
if(n%i==0)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue