1、跑步训练
package test;
public class Lqb{
public static void main(String[] args) {
double num=10000;
double k=0;
while(num!=0) {
if (num>600) {
num-=600;
k++;
if (num==0) {
break;
}
num+=300;
k++;
}else {
k*=60;
k+=num/10;
break;
}
}
System.out.println((int)k);
}
}
2、阶乘约数
package test;
//一个数的约数个数等于将其分解成质数乘积后质数的指数加一相乘
//例把这个数先用2、3、5、7、11、13、......等质数的连乘积表示,
//比如24=2*2*2*3=2³*3,再用各个质数的指数加一后再相乘即为此数的约数个数,
//如 (3+1)*(1+1)=4*2=8,即表示24有8个约数。
public class Lqb1 {//【蓝桥杯练习】100的阶乘有多少个约数?
public static void main(String[] args) {
int z[]= {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int num[]=new int[25];
int su[]=new int[100];
long y=1;
for(int i=0;i<100;i++) {
su[i]=i+1;
}
for(int x=0;x<100;x++) {
for(int j=0;j<25;j++) {
if(su[x]%z[j]==0) {
num[j]++;
su[x]=su[x]/z[j];
j--;
}
}
}
for(int j=0;j<25;j++) {
y=y*(num[j]+1);
// System.out.println(num[j]+1);
}
System.out.println(y);
}
}//答案:39001250856960000
3、出栈次序
package test;
//3题 出栈次序
//问题描述
//X星球特别讲究秩序,所有道路都是单行线。
//一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。
//路边有个死胡同,只能容一辆车通过,是临时的检查站,如图所示。
//X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。
//如果车辆进入检查站和离开的次序可以任意交错。
//那么,该车队再次上路后,可能的次序有多少种?
//为了方便起见,假设检查站可容纳任意数量的汽车。
//显然,如果车队只有1辆车,可能次序1种;2辆车可能次序2种;3辆车可能次序5种。
//现在足足有16辆车啊,亲!需要你计算出可能次序的数目。
public class Lqb2 {
static int y=0;
public static void main(String[] args){
Lqb2 l=new Lqb2();
l.zhang(16,0);
System.out.println(y);
}
public void zhang(int x,int i) {
if(x==0&&i==0) {
y++;return;
}
if(i!=0) {
zhang(x,i-1);
}
if(x!=0) {
zhang(x-1,i+1);
}
}
}//答案:35357670
4、歌德巴赫分解
package test;
public class Lqb3 {
public static void main(String[] args) {
Lqb3 l=new Lqb3();
int s[]=l.zhishu(10000);
int y=l.min(10000,s);
System.out.println(y);
}
public int[] zhishu(int x){//求2到x之间的质数,数组第0元素为质数个数
int zs[]=new int[10000];
zs[1]=2;
int k=2;
for(int i=3;i<=x;i++) {
for(int j=2;j<i;j++) {
if(i%j==0) {
break;
}
if(j==i-1) {
zs[k]=i;
k++;
}
}
}
zs[0]=k-1;
return zs;
}
public int min(int x,int zs[]){//求x以内的偶数的最大的较小质数差 (4以上的偶数可分解为两个质数和)
int y=0;
for(int i=4;i<=x;i=i+2) {
for(int k=1;k<=zs[0];k++) {
for(int j=zs[0];j>=k;j--) {
if(zs[j]==i-zs[k]) {
// System.out.println("num"+i+"zs"+zs[k]);
if(y<zs[k]) {
y=zs[k];
}
j=k-1;k=zs[0]+1;
}
}
}
}
return y;
}
}答案:173
5、图书排列
package test;
public class Lqb4 {//5题 图书排列
static int a=0;
static int b=1;
static int zz[]= {2,3,4,5,6,7,8,9,10,11};
public static void main(String[] args) {
int num[]=new int[12];
Lqb4 l=new Lqb4();
l.sx(num,-1);
System.out.println(a);
}
public void sx(int z[],int x) {
int y[]=new int[12];
for(int i=1;i<11;i++) {
y[i]=z[i];
}
for(int j=1;j<11;j++) {
if(y[j]==0&&Lqb4.jdz(y[j-1]-zz[x+1])!=1&&Lqb4.jdz(y[j+1]-zz[x+1])!=1) {
y[j]=zz[x+1];
if(x+1==9) {
a++;
j=11;
}else {
sx(y,x+1);y[j]=0;
}
}
}
}
public static int jdz(int x) {//求绝对值
if(x>0) {
x=x;
}else {
x=-x;
}
return x;
}
}//答案:479306
6、猴子分香蕉
package text;
public class Lqb{
public static void main(String[] args) {
int ans=0;
for (int i=3141;i<=10000;i+=5){
int x=i;
x-=1;
if (x%5==0){
x-=(x)/5;
if (x%5==2){
x-=2;
x-=(x)/5;
if (x%5==3){
x-=3;
x-=(x)/5;
if (x%5==4){
x-=4;
x-=(x)/5;
if (x%5==0){
ans=i;
break;
}
}
}
}
}
}
System.out.println(ans);
}
}
}答案:3141
7、稍小分数
package test;
public class Lqb5 {
public static void main(String[] args) {
int y[]=Lqb5.jyfs(7, 13);
System.out.println(y[0]+"/"+y[1]);
}
public static boolean wwzs(int x,int y) {//判断xy是否互质,x<y
for(int i=2;i<=x;i++) {
if(x%i==0&&y%i==0) {
return false;
}
}
return true;
}
public static int[] jyfs(int x,int y) {//最大既约分数
int z[]= {1,100};
float a=1,b=1,c=1;
for(int i=100;i>0;i--) {
// System.out.println(z[0]+"|"+z[1]);
for(int j=100;j>i;j--) {
a=i;a=a/j;b=x;b=b/y;c=z[0];c=c/z[1];
if(a<b&&Lqb5.wwzs(x, y)) {
if(a>c) {
z[0]=i;
z[1]=j;
}
}
}
}
return z;
}
}
8、excel地址
package text;
public class Lqb {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
String str="";
while (num != 0)
{
//判断是否整除
if (num % 26 == 0)
{
str = (char)(26 + 64)+str;
num -= 1;
}
else
{
str = (char)(num % 26 + 64)+str;
}
num /= 26;
}
//输出Excel
System.out.print(str);
}
}
9、日期问题
package text;
class Lqb{
public static TreeSet<Integer> set = new TreeSet<Integer>();
public static List<Integer> list =new ArrayList<Integer>();
public static void f(String year,String mon,String day) {
int y = Integer.parseInt(year);
int m = Integer.parseInt(mon);
int d = Integer.parseInt(day);
if(y<=59) {
y+=2000;
}else {
y+=1900;
}
if(((y%4==0&&y%100!=0)||y%400==0) && m==2 && d>0 && d<=29) {
set.add(Integer.parseInt(""+y+mon+day));
}
if(y%4!=0 && m==2 && d>0 &&d<=28) {
set.add(Integer.parseInt(""+y+mon+day));
}
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12) && d>0 && d<=31) {
set.add(Integer.parseInt(""+y+mon+day));
}
if((m==4|| m==6|| m==9|| m==11) && d>0&&d<=30) {
set.add(Integer.parseInt(""+y+mon+day));
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String[] s =str.split("/");
f(s[0],s[1],s[2]);
f(s[2],s[0],s[1]);
f(s[2],s[1],s[0]);
list.addAll(set);
for(int i=0;i<list.size();i++) {
String ans = ""+list.get(i);
System.out.println(ans.substring(0, 4)+"-"+ans.substring(4,6)+"-"+ans.substring(6,8));
}
}
}
10、整数划分
package test;
public class Lqb8 {//10
static int a=0;
public static void main (String[] args) {
Lqb8.bl(5,1);
System.out.println(a);
}
public static void bl(int x,int y) {
for(int i=0;i<=(x/y);i++) {
// System.out.println(i);
if((x-i*y)==0){
a++;
// System.out.println(x+" "+i+"*"+y);
return;
}
x=x-i*y;
if(y>x) {
return;
}
// System.out.println(x+" "+y);
bl(x,y+1);
x=x+i*y;
}
}
}
11、一步之遥
package text;
class Lqb{
public static void main(String[] args) {
int res = Integer.MAX_VALUE;
for(int x = 0; x < 100; x++){
for(int y = 0; y < 100; y++){
if(x*97 - y*127 == 1){
res = Math.min(x+y,res);
}
}
}
System.out.println(res);
}
}
12、机器人塔
package test;
public class Lqb10 {//12
static int g=0;
public static void main (String[] args) {
int a[]={1,2};
int b[]=new int[Lqb10.zs(a)];
// System.out.println();
Lqb10.bl(a[0],a[1],b,0);
System.out.println("g="+g);
}
public static int zs(int[] a) {//塔的层数
int y=0,x,i=1;
x=a[1]+a[0];
while(true) {
x=x-i;
i++;
y++;
if(x==0) {
return y;
}
}
}
public static void bl(int x,int y,int[] b,int c) {
if(x>0) {
b[c]=1;
x--;
if(c<b.length-1) {
bl(x,y,b,c+1);
}else if(c==b.length-1) {
for(int i=0;i<b.length;i++) {
System.out.print(b[i]+" ");
}
System.out.println("1"+"x="+x+"y="+y);
int[] bb=new int[b.length];int xx=x,yy=y;
for(int i=1;i<b.length;i++) {
bb[i]=b[i];
}
for(int i=1;i<bb.length;i++) {
for(int j=0;j<bb.length-i;j++) {
if((bb[j]+bb[j+1])%2==0&&xx>0) {
xx--;bb[j]=1;
if(i==bb.length-1) {
g++;System.out.println("g="+g);
}
}else if((bb[j]+bb[j+1])%2!=0&&yy>0) {
yy--;bb[j]=2;
if(i==bb.length-1) {
g++;System.out.println("g="+g);
}
}else {
j=bb.length;i=bb.length;
}
}
for(int k=0;k<bb.length-i;k++) {System.out.print(bb[i]+" ");}System.out.println("");
}
}
x++;
}
if(y>0) {
b[c]=2;
y--;
if(c<b.length-1) {
bl(x,y,b,c+1);
}else if(c==b.length-1) {
for(int i=0;i<b.length;i++) {
System.out.print(b[i]+" ");
}
System.out.println("2"+"x="+x+"y="+y);
for(int i=1;i<b.length;i++) {
for(int j=0;j<b.length-i;j++) {
if((b[j]+b[j+1])%2==0&&x>0) {
x--;b[j]=1;
if(i==b.length-1) {
g++;System.out.println("g="+g);
}
}else if((b[j]+b[j+1])%2!=0&&y>0) {
y--;b[j]=2;
if(i==b.length-1) {
g++;System.out.println("g="+g);
}
}else {
j=b.length;i=b.length;
}
}
for(int k=0;k<b.length-i;k++) {System.out.print(b[i]+" ");}System.out.println("");
}
}
}
if(c==b.length-1) {
return;
}
}
}
13 、七星镇数
package test;
public class Lqb11 {
public static void main(String[] args) {
int[] array={1,2,3,4,5,7,8,9,10,12,13};
// int[] array={1,2,3};
int[] y=new int[array.length];
permute(array,y,0);
}
//数组重组(全排列)
public static void permute(int[] array,int[] y,int start){
// if(start==array.length-1&&text(y)!=null){ //当start(数组指向的数为最后一个时),也就是可交换数到了最后一个
// System.out.print(text(y));
// return;
// }
if(start==array.length){
// for(int i=0;i<y.length;i++) {
// System.out.print(y[i]+" ");
// }System.out.println("");
if(text(y)!=null) {
System.out.print(text(y));
}
return;
}
for(int i=0;i<array.length;i++){
if(y[i]==0) {
y[i]=array[start];
permute(array,y,start+1);
y[i]=0;
}
}
}
//数组验证
public static String text(int[] b){
int[] a=new int[7];
a[0]=14+b[0]+b[1]+6;
a[1]=6+b[2]+b[3]+11;
a[2]=11+b[4]+b[5]+b[6];
a[3]=b[6]+b[7]+b[0]+b[8];
a[4]=b[8]+b[1]+b[2]+b[9];
a[5]=b[10]+b[4]+b[3]+b[9];
a[6]=b[7]+b[10]+b[5]+14;
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length;j++){
if(a[i]!=a[j]){ //验证错误
return null;
}
}
}
//拼接答案
String str=b[8]+" "+b[1]+" "+b[2]+" "+b[9];
// for(int i=0;i<b.length;i++) {
// System.out.print(b[i]+" ");
// }System.out.println("");
return str;
}
}
//答案:10 3 9 8