【每日一题】24.10.14 - 24.10.20

在这里插入图片描述
在这里插入图片描述

上期回顾:【每日一题】24.10.7 - 24.10.13
个人主页:C_GUIQU
归属专栏:每日一题

10.14 直角三角形

1. 题目

直角三角形

在这里插入图片描述

2. 解题思路

用if判断,列出三种形式的勾股定理。

3. 代码实现(AC_Code)

  • C++
#include <iostream>

using namespace std;

int main()
{
    int a,b,c;
    cin >> a >> b >> c;

    if(a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;

    return 0;
}
  • Java
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = scan.nextInt();

        if(a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a)
            System.out.println("YES");
        else
            System.out.println("NO");

        scan.close();
    }
}

10.15 回文判定

1. 题目

回文判定

在这里插入图片描述

2. 解题思路

从前往后遍历的同时从后往前遍历,判断对应字符是否相等。

3. 代码实现(AC_Code)

  • C++
#include <iostream>

using namespace std;

int main()
{
    string str;
    cin >> str;

    for (int i = 0, j = str.length() - 1; i < str.length() / 2; i++, j--)
    {
        if(str[i] != str[j])
        {
            cout << "N" << endl;
            return 0;
        } 
    }
    cout << "Y" << endl;

    return 0;
}
  • Java
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();

        for (int i = 0, j = str.length() - 1; i < j; i++, j--) {
            if(str.charAt(i) != str.charAt(j)) {
                System.out.println("N");
                return ;
        }
    }
        System.out.println("Y");
        scan.close();
    }
}

10.16 二次方程

1. 题目

二次方程

在这里插入图片描述

2. 解题思路

具体见代码

3. 代码实现(AC_Code)

  • C++
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;

    int delta = b * b - 4 * a * c;
    if(delta < 0)
        cout << "NO" << endl;
    else
    {
        // 用double相对于int更准确
        double x1 = (-b + sqrt(delta) / 2.0 * a);
        double x2 = (-b + sqrt(delta) / 2.0 * a);

        if(x1 == (int)x1 && x2 == (int)x2)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }

    return 0;
}
  • Java
import java.util.Scanner;
import java.lang.Math; // 用于调用sqrt函数

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt(); // 读取输入的三个整数

        // 判别式 delta = b^2 - 4ac
        int delta = b * b - 4 * a * c;

        // 检查方程是否有实数根,并且这些根是否为整数
        if (delta < 0) {
            // 如果判别式小于0,则方程没有实数根
            System.out.println("NO");
        } else {
            // 计算两个根
            double x1 = (-b + Math.sqrt(delta)) / (2.0 * a);
            double x2 = (-b - Math.sqrt(delta)) / (2.0 * a);

            // 检查根是否为整数
            if (x1 == Math.floor(x1) && x2 == Math.floor(x2)) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }

        scanner.close();
    }
}

10.17 互质

1. 题目

互质

在这里插入图片描述

2. 解题思路

用欧几里得算法找出任意两个正整数的最大公约数,判断是否为1,为1则是质数,反之则不是质数。

法1:递归
法2:迭代
在递归版本中,函数不断地调用自身,直到 b 为 0,此时返回 a,即为最大公约数。在迭代版本中,使用一个循环不断更新 a 和 b 的值,直到 b 为 0,此时 a 就是最大公约数。

【欧几里得算法】又称辗转相除法,是用来求两个正整数最大公约数的一种方法。
算法原理:
假设两个数为a和b(a>b),用a除以b得到余数r,若r为0,则b就是a和b的最大公约数;若r不为0,则用b除以r,再得到新的余数,继续这个过程,直到余数为0为止,此时的除数就是a和b的最大公约数。

在这里插入图片描述

3. 代码实现(AC_Code)

  • C++

【法1】递归

#include <iostream>

using namespace std;

int gcd(int a, int b)
{
    if(b == 0)
        return a;
    else
        return gcd(b, a % b);
}

int main()
{
    int count = 0;
    for(int i =1; i <= 2020; i++)
    {
        if(gcd(i, 1018) == 1)
            count++;
    }
    cout << count << endl;

    return 0;
}

【法2】迭代

#include <iostream>

using namespace std;

int gcd(int a, int b)
{
    while(b != 0)
    {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int main()
{
    int count = 0;
    for(int i =1; i <= 2020; i++)
    {
        if(gcd(i, 1018) == 1)
            count++;
    }
    cout << count << endl;

    return 0;
}
  • Java

【法1】递归

public class Main {
    public static int gcd(int a, int b) {
        if(b == 0)
            return a;
        else
            return (gcd(b,a % b));
    }
    
    public static void main(String[] args) {
        int count = 0;
        for(int i = 1; i <= 2020; i++) {
            if(gcd(i, 1018) == 1)
                count++;
        }
        System.out.println(count);
    }
}

【法2】迭代

public class Main {
    public static int gcd(int a, int b) {
        while(b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }
    
    public static void main(String[] args) {
        int count = 0;
        for(int i = 1; i <= 2020; i++) {
            if(gcd(i, 1018) == 1)
                count++;
        }
        System.out.println(count);
    }
}

10.18 穿越时空之门

1. 题目

穿越时空之门

在这里插入图片描述

2. 解题思路

具体见代码。

3. 代码实现(AC_Code)

  • C++
#include <iostream>
#include <string>

using namespace std;

// 计算给定整数 n 的二进制表示中各位数字之和的函数
int getBinarySum(int n)
{
    string binary = "";
    // 将整数 n 转换为二进制表示并存入字符串 binary 中
    while(n > 0)
    {
        binary = to_string(n % 2) + binary;
        n /= 2;
    }
    
    int sum = 0;
    // 遍历二进制字符串,计算各位数字之和
    for(char digit : binary)
    {
        // 将字符类型的数字字符转换为实际数字值并累加到 sum 中
        // 例如,'1' - '0' 的结果是 1
        sum += digit - '0';
    }
    return sum;
}

// 计算给定整数 n 的四进制表示中各位数字之和的函数
int getQuaternarySum(int n)
{
    string Quaternary = "";
    // 将整数 n 转换为四进制表示并存入字符串 Quaternary 中
    while(n > 0)
    {
        Quaternary = to_string(n % 4) + Quaternary;
        n /= 4;
    }
    
    int sum = 0;
    // 遍历四进制字符串,计算各位数字之和
    for(char digit : Quaternary)
    {
        // 将字符类型的数字字符转换为实际数字值并累加到 sum 中
        sum += digit - '0';
    }
    return sum;
}

int main()
{
    int count = 0;
    // 遍历从 1 到 2024 的所有整数
    for(int i = 1; i <= 2024; i++)
    {
        // 如果当前整数 i 的二进制表示各位数字之和等于四进制表示各位数字之和
        if(getBinarySum(i) == getQuaternarySum(i))
            count++;
    }
    // 输出符合穿越条件的勇者人数
    cout << count << endl;

    return 0;
}
  • Java
public class BinaryQuaternaryEquality {
    // 计算给定整数 n 的二进制表示中各位数字之和的方法
    public static int getBinarySum(int n) {
        // 将整数 n 转换为二进制字符串表示,例如 n = 5 时,返回 "101"
        String binary = Integer.toBinaryString(n);
        int sum = 0;
        // 将二进制字符串转换为字符数组进行遍历
        for (char digit : binary.toCharArray()) {
            // 将字符类型的数字字符转换为实际数字值并累加到 sum 中,
            // 例如,'1' - '0' 的结果是 1
            sum += digit - '0';
        }
        return sum;
    }

    // 计算给定整数 n 的四进制表示中各位数字之和的方法
    public static int getQuaternarySum(int n) {
        // 将整数 n 转换为四进制字符串表示,例如 n = 5 时,返回 "11"
        String quaternary = Integer.toString(n, 4);
        int sum = 0;
        // 将四进制字符串转换为字符数组进行遍历
        for (char digit : quaternary.toCharArray()) {
            // 将字符类型的数字字符转换为实际数字值并累加到 sum 中
            sum += digit - '0';
        }
        return sum;
    }

    public static void main(String[] args) {
        int count = 0;
        // 遍历从 1 到 2024 的整数
        for (int i = 1; i <= 2024; i++) {
            // 如果当前整数 i 的二进制表示各位数字之和等于四进制表示各位数字之和
            if (getBinarySum(i) == getQuaternarySum(i)) {
                count++;
            }
        }
        // 输出符合穿越条件的勇者人数
        System.out.println(count);
    }
}

10.19 元音大写

1. 题目

元音大写

在这里插入图片描述

2. 解题思路

遍历字符串,逐个判断是否为元音字母,转换为大写字母后输出最终的字符串。

3. 代码实现(AC_Code)

  • C++
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str;
    cin >> str;

    for (int i = 0; i < str.length(); i++)
    {
        if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u')
            str[i] = toupper(str[i]);
    }
    cout << str << endl;

    return 0;
}
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();

        // 将输入的字符串转换为字符数组
        char[] charArray = str.toCharArray();

        for (int i = 0; i < charArray.length; i++) {
            if (charArray[i] == 'a' || charArray[i] == 'e' || charArray[i] == 'i' || charArray[i] == 'o' || charArray[i] == 'u')
                // 将当前字符转换为大写形式
                charArray[i] = Character.toUpperCase(charArray[i]);
        }
        // 将修改后的字符数组转换回字符串并输出
        System.out.println(new String(charArray));

        scan.close();
    }
}

10.20 跑步

1. 题目

跑步

在这里插入图片描述

2. 解题思路

具体见代码。

3. 代码实现(AC_Code)

  • C++
#include <iostream>

using namespace std;

int main()
{
    // 定义一个数组month,用于存储每个月的天数
    // 这里按照非闰年的情况初始化,2月为28天
    int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    // 定义变量day,用于模拟从2022年1月1日开始的天数计数,初始值为1
    int day = 1;
    // 定义变量sum,用于累加满足晨跑条件的天数,初始值为0
    int sum = 0;

    // 外层循环,遍历12个月
    for (int i = 0; i < 12; i++)
    {
        // 内层循环,遍历每个月的天数
        for (int j = 1; j <= month[i]; j++)
        {
            // 判断当前日期是否满足晨跑条件
            // 如果是周六(day % 7 == 1)或者周日(day % 7 == 2)
            // 或者是每月的1日、11日、21日、31日,则满足条件
            if (day % 7 == 1 || day % 7 == 2 || j == 1 || j == 11 || j == 21 || j == 31)
            {
                // 如果满足晨跑条件,将sum加1
                sum++;
            }
            // 每经过一天,day的值增加1,模拟天数的递增
            day++;
        }
    }
    // 输出满足晨跑条件的总天数
    cout << sum << endl;

    return 0;
}
  • Java
public class Main {
    public static void main(String[] args) {
        int month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, day = 1, sum = 0;

        for(int i = 0; i < 12; i++) {
            for(int j = 1; j <= month[i]; j++) {
                if(day % 7 == 1 || day % 7 == 2 || j == 1 || j == 11 || j == 21 || j == 31)
                    sum++;
                day++;
            }
        }
        System.out.println(sum);
    }
}

最后,感谢您的阅读,期待您的一键三连!
在这里插入图片描述

<think>好的,用户想查找OpenWRT 24.10.0的相关信息或下载链接。首先,我需要确认OpenWRT的版本号是否正确,因为通常OpenWRT的版本号格式是年份加月份,比如21.02.3,或者开发版如Snapshot。用户提到的24.10.0看起来像是2410月的版本,但目前(2023年)还没有这个版本,可能用户有误解或者是指未来的版本? 接下来,我应该检查用户提供的引用内容。引用[1]提到的是OpenWrt的一般介绍和开发流程,引用[2]提到了红米AX6000的V24.10.0固件,但链接是恩山论坛的。引用[3]则是关于rsync服务的配置。可能用户看到的V24.10.0是第三方编译的版本,而不是官方发布。 用户可能混淆了官方版本和第三方固件。需要指出OpenWRT官方可能没有24.10.0这个版本,建议用户核实来源。同时,引用[2]中的论坛帖子可能有该版本的下载,但属于第三方修改版,需要注意风险。 另外,用户可能需要了解如何获取官方固件或更新日志,需要引导用户到官方网站查看,或者检查论坛资源。还要提醒用户第三方固件的潜在问题,比如安全性和稳定性。 最后,生成相关问题时要覆盖版本信息、下载方法、第三方固件区别等,帮助用户全面了解。</think>根据您的问题,以下是关于OpenWrt 24.10.0的详细信息和建议: ### 1. OpenWrt 24.10.0的官方状态 目前OpenWrt官方并未发布24.10.0版本。OpenWrt的正式版本命名通常遵循`年份.月份`格式(例如22.03.3),而开发中的版本称为**Snapshot**。您提到的24.10.0可能是第三方开发者自定义的版本编号,例如恩山无线论坛用户自行编译的固件[^2]。 --- ### 2. 如何获取相关资源 #### (1)第三方编译固件 根据引用[2],红米AX6000的OpenWrt V24.10.0固件发布于恩山无线论坛,需通过论坛链接下载。这类固件通常针对特定设备(如小米路由器)优化,但需注意: - **风险提示**:第三方固件可能包含未经验证的功能或潜在兼容性问题; - **下载建议**:从可信度高的论坛帖子获取,并核对文件的哈希值。 #### (2)官方资源 若需官方版本,建议访问: - **OpenWrt官网**:[https://openwrt.org](https://openwrt.org) - **官方软件仓库**:[https://downloads.openwrt.org](https://downloads.openwrt.org) --- ### 3. 更新日志查询方法 - **官方版本**:通过官网的[Release Notes](https://openwrt.org/releases/start)查看具体版本的更新内容; - **第三方版本**:需联系编译者或查阅对应论坛帖子的更新说明(如引用[2]中的帖子可能包含修改记录)。 --- ### 4. 注意事项 - **版本兼容性**:第三方固件可能依赖特定硬件分区(如uboot大分区[^2]),刷机前需确认设备支持; - **功能验证**:若固件包含rsync等高级功能,可参考引用[3]的方法配置服务。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值