首页 > 编程语言 >备战蓝桥杯JAVA B组Day7

备战蓝桥杯JAVA B组Day7

时间:2024-10-22 15:16:57浏览次数:9  
标签:JAVA Scanner int Day7 sum System 蓝桥 public out

备战蓝桥杯JAVA B组Day7

前言

零基础小白备战蓝桥杯第七天,刷题内容为:洛谷题单【入门3】循环结构。

P5722 【深基4.例11】数列求和

AC代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long sum = 0;
        for(int i = 1;i <= n;i++) {
            sum = sum + i;
        }
        System.out.print(sum);
    }
}

补充:

简单的循环。

P5723 【深基4.例13】质数口袋

AC代码:

import java.util.Scanner;

public class Main{
    public static void main(String []args) {
        Scanner sc = new Scanner(System.in);
        int L = sc.nextInt();
        int count = 0;
        int sum = 0;

        for(int i = 2;i <= L;i++) {
            if(f(i)) {
                sum = sum + i;
                if(sum > L){
                    break;
                }
                System.out.println(i);
                count++;
            }
        }
        System.out.print(count);
    }

    public static boolean f(int n) {
        boolean flag = true;
        for(int i = 2;i <= Math.sqrt(n);i++) {
            if(n % i == 0) {
                flag = false;
                break;
            }
        }
        return flag;
    }
}

补充:

判断质数的三种方法:

质数,也称为素数,是指一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。在Java中,判断一个数是否为质数可以通过几种不同的方法实现。

1.常规方法:
最基本的方法是遍历从2到该数减1的所有自然数,检查是否有任何数能够整除目标数。如果在遍历过程中找到了一个能够整除的数,则可以确定该数不是质数。以下是实现这一方法的Java代码示例:

public static void isPrime(int n) {
    int i = 2;
    for (; i < n; i++) {
        if (n % i == 0) {
            System.out.println(n + "不是素数");
            break;
        }
    }
    if (n == i) {
        System.out.println(n + "是素数");
    }
}

2.提高效率的方法:
另一种稍微高效的方法是将遍历的范围限制在2到目标数的一半,因为任何数的最大因数都不会超过其一半。这样可以减少遍历的次数,提高判断效率。以下是Java代码示例:

public static void isPrime(int n) {
    int m = 0;
    for (int i = 2; i < n / 2; i++) {
        if (n % i == 0)
            m++;
    }
    if (m == 0)
        System.out.println(n + "是素数");
    else
        System.out.println(n + "不是素数");
}

3.高效方法
最高效的方法是只遍历从2到目标数的平方根。因为如果一个数不是质数,那么它的因数一定是成对出现的,其中一个因数不大于它的平方根,另一个因数不小于它的平方根。如果在遍历到平方根的过程中都没有找到能够整除的数,则可以确定该数是质数。以下是Java代码示例:

public static void isPrime(int n) {
    boolean flag = true;
    for (int j = 2; j <= Math.sqrt(n); j++) {
        if (n % j == 0) {
            flag = false;
            break;
        }
    }
    if (flag)
        System.out.println(n + "是素数");
    else
        System.out.println(n + "不是素数");
}

在实际应用中,推荐使用最后一种方法,因为它在效率上更优,尤其是在判断较大的数时。

P1217 [USACO1.5] 回文质数 Prime Palindromes

AC代码:

import java.util.Scanner;

public class Main{
    public static void main(String []args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int min = Math.min(9999999,b);
        if(a%2==0){
            a = a + 1;
        }

        for(int i = a;i <= min;i = i + 2){
            if(d(i)) {
                if(f(i)){
                    System.out.println(i);
                }
            }
        }
    }

    public static boolean d(int n) {
        int a = 0, b = n;
        while (n > 0) {
            int c = n % 10;
            a = a * 10 + c;
            n /= 10;
        }
        return b == a;
    }


    public static boolean f(int n) {
        boolean flag = true;
        for(int i = 2;i <= Math.sqrt(n);i++) {
            if(n % i == 0) {
                flag = false;
                break;
            }
        }
        return flag;
    }
}

补充:

判断数字是否回文:

注意最大的回文数质数是9989899,所以使用int min = Math.min(9999999,b);来减小数据范围。偶数不可能是质数,所以使用一个if来限制只判断奇数。

P1423 小玉在游泳

AC代码:

import java.util.Scanner;

public class Main{
    public static void main(String []args) {
        Scanner sc = new Scanner(System.in);
        double m = sc.nextDouble();
        double sum = 0.0;
        double n = 2;
        int count = 0;

        while (sum < m){
            sum = sum + n;
            n = n * 0.98;
            count++;
        }

        System.out.print(count);
    }
}

补充:

简单的while循环。

标签:JAVA,Scanner,int,Day7,sum,System,蓝桥,public,out
From: https://blog.csdn.net/2401_88077378/article/details/143118290

相关文章

  • java程序设置开机自启
    Linux系统jar包开机自启第一步:创建service文件sudonanoetc/systemd/system/myapp.service第二步:将下面代码复制到刚才创建的文件里面,保存[Unit]Description=JavacameraserviceAfter=network.target[Service]WorkingDirectory=/home/app/javaEnvironment="LD_LIBR......
  • JavaScript 函数定义
    JavaScript使用关键字 function 定义函数。函数可以通过声明定义,也可以是一个表达式。functionfunctionName(parameters){执行的代码}functionmyFunction(a,b){ returna*b;}函数表达式JavaScript函数可以通过一个表达式定义。函数表达式可以存储在变......
  • java中的锁及实现原理
    重入锁ReentrantLock重人锁ReentrantLock,顾名思义,就是支持重进人的锁,它表示该锁能够支持一个线程对资源的重复加锁。除此之外,该锁的还支持获取锁时的公平和非公平性选择。ReentrantLock虽然没能像synchronized关键字一样支持隐式的重进人,但是在调lock()方法时,已经获取到锁的线......
  • [Javascript] Covert for loop code to recursion code
    //loopfunctiondemo1(){//beforeloopbeforeLoopCode;for(initCode;conditionCode;stepChangeCode){loopCode}postCode}//recursivefunctiondemo2(){beforeLoopCode;initCodefunction_m(){if(!c......
  • [转]【Java】DelayQueue 的延时任务实现
    来源:Kimi.ai 在Java中,DelayQueue是一个非常有用的工具,用于实现延迟任务。以下是一个使用示例,它展示了如何使用DelayQueue:基本使用示例:首先,你需要创建一个实现了 Delayed 接口的类。这个类需要实现 getDelay 方法,该方法返回延迟时间,以及 compareTo 方法,用于确定元素在......
  • P8796 [蓝桥杯 2022 国 AC] 替换字符
    题目大意给定一个仅含小写英文字母的字符串\(s\),每次操作选择一个区间\([l_i,r_i]\)将\(s\)的该区间中的所有字母\(x_i\)全部替换成字母\(y_i\),问所有操作做完后,得到的字符串是什么。输入的第一行包含一个字符串\(s\)。第二行包含一个整数\(m\)。接下来\(m\)行,每......
  • 面试常见Java八股文整理!!!
    1.Java线程start方法和run方法的区别start方法启动了一个新的线程,而run方法不能启动一个新线程,还是在main线程下运行,程序依然是主线程一个线程在运行。调用start方法可以启动线程,而run方法只是thread的一个普通方法还是在主线程中执行。通过start()方法来启动的新线程,处于就......
  • JavaScript 第25章:Vue 基础
    在学习JavaScript的第25章关于Vue的基础知识时,我们将从以下几个方面来了解Vue框架,并通过一个实战案例来巩固所学的知识。Vue概述Vue.js是一个用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,易于上手,同时......
  • 史上最强Java面试八股文合集,持续更新!
    线程池核心参数补充:还有一个参数 threadFactory(线程工厂):用于创建新线程的工厂,通常用于给线程设定名称、设置为守护线程等。默认的线程工厂会创建一个普通的、非守护线程。ThreadPoolExecutorthreadPoolExecutor=newThreadPoolExecutor( 3,......
  • Java相关面试题(2024大厂高频面试题系列)
    一、多线程基础基础知识1.并发编程1.1并发编程的优缺点优点:充分利用多核CPU的计算能力,通过并发编程的形式将多核CPU的计算能力发挥到极致,性能得到提升。方面进行业务的拆分。提高系统并发能力和性能:高并发系统的开发,并发编程会显得尤为重要,利用好多线程机制可以大大提高......