栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

蓝桥31日冲刺,冲刺第二日打卡

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥31日冲刺,冲刺第二日打卡

1.排他平方数 https://www.lanqiao.cn/problems/712/learning/ 直接暴了,先判断有没有重复再进行运算
public class 排他平方数 {
    public static void main(String[] args) {
        long s;
        int []arr=new int[6];
        int [][]brr=new int[1000000][10];
        int y,k,n=0;
        for (int i=100000;i<1000000;i++){
            n=0;
            k=i;
            y=0;
            s= (long) i *i;
            while (k>0){
                arr[y]=k%10;
                brr[i][k%10]++;
                if(brr[i][k%10]==2){
                    n=1;
                    break;
                }
                y++;
                k/=10;
            }

            while (s>0&&n==0){
                for (int m=0;m<6;m++){
                    if (s%10==arr[m]) {
                        n=1;
                        break;
                    }
                }
                s/=10;

            }
            if (n==0&&s==0){
                System.out.println(i);
            }
        }
    }
}
2.买不到的数目https://www.lanqiao.cn/problems/213/learning/ 这题疑问有点多,解析一下下吧:

假设  给你两个数  a,b(定a 先推为什么不能大于结果不能大于a*b
1.假设有一个值  大于a*b了,例如a*b+n无法买到
那么从a*b+n开始
下一个能买到的数应该是 上一个能买到的数+a或者+b
而它跨过了a*b+n这个值
那么这上一个应该在 a*b+n-a+1-----a*b+n-1这个区间内
而它跨越的也应该是一整个长度为a-1个数的区间所以把上一个值给定为0
即将a*b+n-a+1-----a*b+n-1这个区间中能到达的那个值定为0,就又是一轮新的循环
那么在下一个a*b+n时,同样无法到达
比如  3   5
3   5  6  8  9  10  11  12  13  14  15  16 ......x  
假设x无法到达,而x-1可以到
那么从x-1 加上一个3或者5  最小为x+2,那么就是 x,x+1两个数都不能到达
那把x-1 当成0,x当成1  x+1当成2 x+2当成3  是不是又开始了新的一轮
3   5  6  8  9  10  11  12  13  14   16 ......x  

接下来是为什么推a*b-a-b
因为不可能大于a*b  所以a*b开始的值都可以到
那么  a*b---a*b+b的值都是可以到的
a*b-a的值可以从 a*b获得
a*b-b的值可以也是同理  因为a*b---a*b+b的值都可以获得
所以  a*b-b----a*b的值也都可以获得
(注意 a*b-b的要求是全部都是b,a*b-a的要求是全a,而其他值则为同时存在a和b)
而 a*b-b+1是一个同时存在a和b的值,所以它可以到上一个值 a*b-b+1-a(a 但是再前一个值无法到达
及a*b-b-a

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a=scan.nextInt();
        int b=scan.nextInt();
        System.out.print(a*b-a-b);
        scan.close();
    }
}
3.回文日期 https://www.lanqiao.cn/problems/498/learning/

不想多说,这题是我拉胯了:

import java.util.Scanner;

public class 回文 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N=scan.nextInt();
        int j,k;
        for(j=N;j<99991231;j++)
        {
            int m = one(j);
            if(m==1) break;
        }
        for(k=N+1;k<99991231;k++)
        {
            int n = two(k);
            if(n==1) break;
        }
        System.out.println(j);
        System.out.println(k);
        scan.close();
    }
    static int one(int x)
    {
        int y = 0;
        int[] a=new int[8];
        for(int i=0;i<8;i++)
        {
            a[i]=x%10;
            x/=10;
        }
        if(a[0]==a[7]&&a[1]==a[6]&&a[2]==a[5]&&a[3]==a[4]&&a[4]*10+a[5]<=12&&a[4]*10+a[5]>0&&a[6]*10+a[7]<=31&&a[6]*10+a[7]>0) y=1;
        return y;
    }
    static int two(int x)
    {
        int y = 0;
        int[] a=new int[8];
        for(int i=0;i<8;i++)
        {
            a[i]=x%10;
            x/=10;
        }
        if(a[0]==a[7]&&a[1]==a[6]&&a[2]==a[5]&&a[3]==a[4]&&a[0]==a[2]&&a[1]==a[3]&&a[4]*10+a[5]<=12&&a[4]*10+a[5]>0&&a[6]*10+a[7]<=31&&a[6]*10+a[7]>0) y=1;
        return y;
    }
}
4.约瑟夫环 https://www.lanqiao.cn/problems/231/learning/

直接规律完结:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int sum = 0;
        for(int i = 2;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号