蓝桥杯:java【思特奇杯·云上蓝桥-算法集训营】第1周

一、

题目描述

代码实现


public class demo1 {
    public static void main(String[] args) {
        int strength=10000;
        int t=0;         //记录时间,单位为分钟
        boolean flag=true;
        while (true){
            if(strength<600 && flag)
                break;
            if(flag){
                strength-=600;
                flag=false;
            }else {
                strength+=300;
                flag=true;
            }
            t++;
        }
        System.out.println(t*60+strength/10);
    }
}

答案

3880

 二、

 题目描述 

 分析

对于一个大于1正整数n可以分解质因数

则n的正约数的个数就是

其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。

 代码实现

public class demo2 {
    public static void main(String[] args){
        int a[]=new int[98];//存放每个质数的次数,97是100以内最小的质数
        for(int i=2;i<=100;i++)//分别求100!的每一个数的质因数
        {
            int j=2;
            int x=i;
            while (j!=x){
                if(x%j==0)
                {
                    a[j]++;
                    x=x/j;
                }
                else
                    j++;
            }
            a[j]++;
        }
        long sum=1;
        for(int b=2;b<=97;b++)
        {
            System.out.println(a[b]);
            if(a[b]!=0)
                sum=(a[b]+1)*sum;
        }
        System.out.println(sum);
    }
}

结果

 39001250856960000

 三、

  题目描述

 分析

 n个不同元素进栈,出栈顺序不同排列的个数为

 答案

 35357670

 四、

 题目描述

public class demo6 {
    static int ans=0;
    static int n=0;
    static int[] arr=new int[10005];
    static boolean[] arr2=new boolean[10005];
    public static void main(String[] args) {
        find();
        for(int i=2;i<=10000;i=i+2)
        {
            for(int j=0;j<n;j++)
            {
                boolean flag=false;
                for(int k=j+1;k<n;k++)
                {
                    if(arr[j]+arr[k]==i)
                    {
                        ans=Math.max(ans,arr[j]);
                        flag=true;
                    }
                }
                if(flag)break;
            }
        }
        System.out.println(ans);

    }

    private static void find() {
        for(int i=2;i<=10000;i++)
        {
            if(!arr2[i])
            {
                int j=2;
                while(i*j<=10000) {
                    arr2[i*j]=true;
                    j++;
                }
            }
        }
        for(int i=2;i<=10000;i++)
            if(!arr2[i]) arr[n++]=i;
    }
    
}

五、

题目描述

public class demo5 {
    public static int count=0;
    public static int a[]={1,2,3,4,5,6,7,8,9,10};
    public static void main(String[] args) {
        dfs(0);
        System.out.println(count);
    }
    public static void dfs(int index)
    {
        if(index==a.length)
        {
            if(check(a))
                count++;
            return;
        }
        for(int i=index;i<10;i++)
        {
            swap(a,i,index);
            dfs(index+1);
            swap(a,i,index);
        }
    }
    public static void swap(int[] A, int i, int j) {
        int temp = A[i];
        A[i] = A[j];
        A[j] = temp;
    }
    private static boolean check(int[] arr) {
        // TODO Auto-generated method stub
        for (int i = 0; i < arr.length; i++) {
            if (i==0&&isfriend(arr[i],arr[i+1])) {
                return false;
            }
            if (i==arr.length-1&&isfriend(arr[i],arr[i-1])) {
                return false;
            }
            if (i>0&&i<arr.length-1&&(isfriend(arr[i],arr[i+1])||isfriend(arr[i],arr[i-1]))) {
                return false;
            }
        }
        return true;
    }

    private static boolean isfriend(int i, int j) {
        // TODO Auto-generated method stub
        return Math.abs(i-j)==1;
    }

}

答案 

479306 

 六、

题目描述 

 代码

public class demo4 {
    public static void main(String[] args) {
        for(int i=1;i<10000;i++)
        {
            if((i-1)%5==0)
            {
                int a=(i-1)/5*4;

                if((a-2)%5==0)
                {
                    int b=(a-2)/5*4;
                    if((b-3)%5==0)
                    {
                        int c=(b-3)/5*4;
                        if((c-4)%5==0)
                        {
                            int d=(c-4)/5*4;
                            if(d%5==0 &&d!=0)
                            {
                                System.out.println(i);
                            }
                        }
                    }
                }
            }
        }
    }
}

 答案

3141 

七 

题目描述 

 代码

 

import java.util.Scanner;

public class demo7 {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int a=in.nextInt();
        int b=in.nextInt();
        int max1=1;
        int max2=0;
        for(int i=100;i>1;i--)
        {
            for(int j=i-1;j>=1;j--)
            {
                if(gong(i,j)==1 && i*a>b*j)
                {
                    if(i*max2<j*max1)
                    {
                        max1=i;
                        max2=j;
                    }
                }

            }
        }
        System.out.println(max2+"/"+max1);
    }
    public static int gong(int i,int j)
    {
        int m;
        while (j!=0)
        {
            m=i%j;
            i=j;
            j=m;
        }
        return i;
    }
}

 

 八

题目描述

 

import java.util.Scanner;

public class demo8 {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int a=in.nextInt();
        StringBuffer s=new StringBuffer();
        int b;
        int c[]=new int[100];
        int i=0;
        while (a>=26)
        {
            b=a%26;
            a=a/26;
            c[i]=b;
            i++;
        }
        c[i]=a;
        for(int j=i;j>=0;j--) {
            //System.out.println(c[j]);
            switch (c[j])
            {
                case 0:s.append("");break;
                case 1:s.append("A");break;
                case 2:s.append("B");break;
                case 3:s.append("C");break;
                case 4:s.append("D");break;
                case 5:s.append("E");break;
                case 6:s.append("F");break;
                case 7:s.append("G");break;
                case 8:s.append("H");break;
                case 9:s.append("I");break;
                case 10:s.append("J");break;
                case 11:s.append("K");break;
                case 12:s.append("L");break;
                case 13:s.append("M");break;
                case 14:s.append("N");break;
                case 15:s.append("O");break;
                case 16:s.append("P");break;
                case 17:s.append("Q");break;
                case 18:s.append("R");break;
                case 19:s.append("S");break;
                case 20:s.append("T");break;
                case 21:s.append("U");break;
                case 22:s.append("V");break;
                case 23:s.append("W");break;
                case 24:s.append("X");break;
                case 25:s.append("Y");break;
                case 26:s.append("Z");break;
            }

        }
        String z=String.valueOf(s);
        System.out.println(z);
    }
}

 

 九

 题目描述

 代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;

public class demo9 {
    public static TreeSet<Integer> set=new TreeSet<Integer>();
    public static List<Integer> list=new ArrayList<Integer>();
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String s=in.nextLine();
        String a=s.substring(0,2);
        String b=s.substring(3,5);
        String c=s.substring(6,s.length());
        date1(a,b,c);
        date1(c,a,b);
        date1(c,b,a);
        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,ans.length()));
        }
    }
    public static void date1(String a,String b,String c)
    {
        int y=Integer.parseInt(a);
        int m=Integer.parseInt(b);
        int d=Integer.parseInt(c);
        if(y>=60 && y<100)
            y=y+1900;
        else if(y<=59 && y>=0)
            y=y+2000;
        if((y%4==0 && y%100!=0) || y%400==0 && m==2 && d>0 && d<=29)
        {
            set.add(Integer.parseInt(""+y+b+c));
        }
        if(y%4!=0 && m==2 && d>0 &&d<=28) {
            set.add(Integer.parseInt(""+y+b+c));
        }
        if((m==1||m==3||m==5||m==7||m==8||m==10||m==12) && d>0 && d<=31) {
            set.add(Integer.parseInt(""+y+b+c));
        }
        if((m==4|| m==6|| m==9|| m==11) && d>0&&d<=30) {
            set.add(Integer.parseInt(""+y+b+c));
        }

    }
}

 十

 题目描述

 代码

import java.util.Scanner;
class demo10{
    public static void main(String[] args) {
        int n;
        int sum;
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt();
        sum = resolve(n,n);
        System.out.println(sum);
    }

    public static int resolve(int a,int max) {
        if(a == 1||max ==1)
            return 1;
        if(a == max)
            return resolve(a,max-1)+1;
        if(a > max)
            return resolve(a,max-1)+resolve(a-max,max);
        if(a < max)
            return resolve(a,a);
        else return 0;
    }

}

 十一

 题目描述

 代码

public class demo11 {
    public static void main(String[] args) {
        for(int i=1;i<1000;i++)
        {
            for(int j=1;j<1000;j++)
            {
                if((i*97-j*127)==1)
                    System.out.println(i+" "+j);
            }
        }
    }
}

答案 

 97

十二

题目描述  

代码 

package lan;

import java.util.Scanner;

public class demo12 {
    public static int M,N;
    public static int num=0;
    public static int shuzu[][];
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        M=in.nextInt();
        N=in.nextInt();
        int a= (int) ((Math.sqrt(1+4*2*(M+N))-1)/2);
        shuzu=new int[a][a];
        dfs(0);
        System.out.println(num);
    }
    public static void dfs(int index)
    {
        if(index==shuzu.length)
        {
            if(check())
                num++;
            return;
        }

        int b[]={0,1};
        for(int i=0;i<b.length;i++)
        {
            shuzu[shuzu.length-1][index]=b[i];
            dfs(index+1);
            shuzu[shuzu.length-1][index]=0;
        }
    }
    public static boolean check()
    {
        int count[]=new int[2];
        for(int c=0;c<shuzu.length;c++)
        {
            count[shuzu[shuzu.length-1][c]]++;
            if(count[0]>M || count[1]>N)
                return false;
        }
        for(int j=shuzu.length-2;j>=0;j--)
        {
            for(int k=0;k<=j;k++)
            {
                shuzu[j][k]=shuzu[j+1][k]^shuzu[j+1][k+1];
                count[shuzu[j][k]]++;
                if(count[0]>M && count[1]>N)
                    return false;
            }
        }
        if (count[0] == M && count[1] == N)  {
            return true;
        }else {
            return false;
        }
    }
}

 十三

题目描述

 

 代码

import java.util.HashSet;

public class as {
    public static int sum = 0;

    public static void swap(int[] A, int i, int j) {
        int temp = A[i];
        A[i] = A[j];
        A[j] = temp;
    }

    public static void dfs(int[] A, int step) {
        if(step == A.length) {
            int[] count = new int[7];
            count[0] = A[0] + A[1] + A[2] + A[3];
            count[1] = A[0] + A[4] + A[6] + A[9];
            count[2] = A[1] + A[4] + 6 + 14;
            count[3] = A[2] + A[5] + 6 + 11;
            count[4] = A[6] + A[8] + A[10] + 14;
            count[5] = A[7] + A[8] + A[9] + 11;
            count[6] = A[3] + A[5] + A[7] + A[10];
            HashSet<Integer> set = new HashSet<Integer>();
            for(int i = 0;i < 7;i++)
                set.add(count[i]);
            if(set.size() == 1) {
                for(int i = 0;i < A.length;i++)
                    System.out.print(A[i]+" ");
                System.out.println();
            }
            sum++;
            return;
        } else {
            for(int i = step;i < A.length;i++) {
                swap(A, i, step);
                dfs(A, step + 1);
                swap(A, i, step);
            }
        }
    }

    public static void main(String[] args) {

        int[] A = {1,2,3,4,5,7,8,9,10,12,13};
        dfs(A, 0);
        System.out.println(sum);
    }
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>