HDU1097——A hard puzzle,HDU1098——Ignatius‘s puzzle,HDU1099——Lottery

news2024/11/16 1:32:29

目录

HDU1097——A hard puzzle

题目描述

运行代码

代码思路

HDU1098——Ignatius's puzzle

题目描述

​编辑​编辑运行代码

代码思路

HDU1099——Lottery

题目描述

运行代码

代码思路

HDU1097——A hard puzzle

题目描述

Problem - 1097

运行代码

#include <iostream>
using namespace std;
int main() {
    int a, b;
    while (cin >> a >> b) {
        int last = 1;
        a %= 10;  // 只保留 a 的个位数字
        while (b > 0) {
            if (b & 1) {  // 如果 b 的最低位是 1
                last = (last * a) % 10;  // 计算个位数字的乘积并取个位
            }
            a = (a * a) % 10;  // 每次更新 a 的个位数字的平方的个位
            b >>= 1;  // b 右移一位
        }
        cout << last << endl;
    }
    return 0;
}

代码思路

  1. 首先定义了两个整数 a 和 b ,用于接收输入的两个数。

  2. 在 while (cin >> a >> b) 中,只要能从标准输入成功读取两个整数到 a 和 b ,就会执行后面的代码。

  3. 定义 last 并初始化为 1 ,用于保存最终结果(即 a 的 b 次幂的最后一位数字)。

  4. 对 a 进行取模运算 a %= 10 ,只保留 a 的个位数字。这是因为只需要关注最后一位数字,其他高位数字不影响结果。

  5. 然后通过一个 while 循环处理 b :

    • 当 b 的最低位是 1 (即 b & 1 为真)时,更新 last 为 (last * a) % 10 ,即计算当前的个位数字乘积并取个位。
    • 每次循环更新 a 为 (a * a) % 10 ,这是因为只关注个位数字,所以每次更新 a 的平方的个位数字。
    • 将 b 右移一位(b >>= 1 ),以便检查下一位。
  6. 最后输出计算得到的 last ,即 a 的 b 次幂的最后一位数字。

HDU1098——Ignatius's puzzle

题目描述

Problem - 1098

运行代码

#include <iostream>
using namespace std;

int main() {
    int k, a;
    while (cin >> k) {
        a = 0;
        for (int i = 1; i < 10000; i++) {
            if ((i * 65 - 18) % k == 0) {
                a = (i * 65 - 18) / k;
                i = 10000;  // 直接结束循环
            }
        }
        if (a == 0) {
            cout << "no" << endl;
        } else {
            cout << a << endl;
        }
    }
    return 0;
}

代码思路

  1. 首先定义了两个整数 k 和 a 。

  2. 通过一个 while 循环,只要能从标准输入成功读取一个整数到 k ,就会执行后续的代码。

  3. 初始化 a 为 0 。

  4. 然后通过一个 for 循环,从 1 迭代到 9999 :

    • 计算 i * 65 - 18 对 k 取模的结果。
    • 如果取模结果为 0 ,说明找到了符合条件的 i ,计算 a 为 (i * 65 - 18) / k ,然后通过将 i 赋值为 10000 直接结束 for 循环。
  5. 根据 a 的值进行判断:

    • 如果 a 仍然为 0 ,说明在循环中没有找到符合条件的 i ,输出 "no" 。
    • 如果 a 不为 0 ,则输出计算得到的 a 。

HDU1099——Lottery

题目描述

http://acm.hdu.edu.cn/showproblem.php?pid=1099

运行代码

#include <iostream>
using namespace std;
#include<algorithm>
int gcd(int a, int b) {
    if (b == 0) return a;  
        return gcd(b, a % b);
}
int main() {
    int n;
    while (cin >> n) {  // 使用 cin 替代 scanf 进行输入
        int a = 0, b = 0, ans = 1;
        for (int i = 1; i < n; i++) {
            ans += n / (n - i);
            int m = n % (n - i);  // 分子
            if (m == 0) continue;
            if (a == 0 && b == 0) {
                a = n - i;
                b = m;
                int gd = gcd(a, b);  // 这里需要在 C++ 中实现计算最大公约数的函数
                a /= gd;
                b /= gd;
            }
            else {
                int gd = gcd(a, n - i);  // 同样需要实现最大公约数函数
                int lm = a * (n - i) / gd;
                b = m * (lm / (n - i)) + b * (lm / a);
                a = lm;
                ans += b / a;
                b %= a;
                if (b == 0) a = 0;
                else {
                    gd = gcd(a, b);
                    a /= gd;
                    b /= gd;
                }
            }
        }
        if (a == 0) {
            cout << ans << endl;
        }
        else {
            for (int i = 1; i < ans * 10; i *= 10)
                cout << " ";
            cout << b << endl;
            cout << ans << " ";
            for (int i = 1; i <= a; i *= 10)
                cout << "-";
            cout << endl;
            for (int i = 1; i < ans * 10; i *= 10)
                cout << " ";
            cout << a << endl;
        }
    }
    return 0;
}

代码思路

  1. 定义了一个自定义函数 gcd ,使用递归的方式实现欧几里得算法来计算两个数的最大公约数。

    • 如果除数 b 为 0 ,则返回被除数 a 作为最大公约数。
    • 否则,通过递归调用 gcd(b, a % b) 继续计算。
  2. 在 main 函数中:

    • 首先,定义了变量 n ,并通过 while (cin >> n) 循环不断读取用户输入的整数 n 。
    • 然后,初始化了变量 a 、b 和 ans 。
    • 在 for 循环中,从 1 到 n - 1 进行迭代:
      • 每次迭代计算 ans += n / (n - i) 。
      • 计算余数 m = n % (n - i) ,如果余数为 0 则跳过本次迭代。
      • 当 a 和 b 都为 0 时,初始化 a 和 b ,并使用 gcd 函数计算它们的最大公约数,然后进行约分。
      • 否则,再次使用 gcd 函数计算相关值,进行一系列复杂的计算和更新操作,包括计算最小公倍数 lm ,更新 a 、b 和 ans 的值,并进行约分处理。
    • 根据 a 是否为 0 ,以不同的格式输出结果。如果 a 为 0 ,直接输出 ans ;否则,按照特定的格式输出 ans 、b 和 a 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openhasp入门--介绍

**OpenHASP** 是一个开源的智能家居控制器&#xff0c;使用ESP32&#xff0c;采用配置方式生成图形界面&#xff0c;免去写代码 1. 高度可定制性&#xff1a;用户可以根据自己的需求和偏好&#xff0c;灵活配置和定制各种自动化规则和场景。例如&#xff0c;您可以设置在特定时…

大模型基础之位置编码RoPE

文章目录 RoPE准备知识RoPE的推导RoPE的代码实现参考资料 RoPE RoPE(Rotary Position Embedding&#xff0c;旋转式位置编码)是一种配合Attention机制能达到“通过绝对位置编码的方式实现相对位置编码”的设计。在2021年2月由苏剑林提出&#xff0c;是现在的大模型最常用的位置…

二叉树的中序遍历 - 力扣(LeetCode)C语言

94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09;&#xff08;点击前面链接即可查看题目&#xff09; 一、题目 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,…

【数据结构与算法】堆实现优先级队列

堆实现优先级队列 一.堆实现优先级队列的原理二.优先级队列结构体三.堆初始化四.入队五.出队六.销毁队列七.总结 一.堆实现优先级队列的原理 堆就是可以将最大值或者最小值,每次取出,那么刚好可以进行排序,而我们的优先级队列,就是对于优先级最高的先进行出队,也就相当于是排序…

空气净化器对去除宠物毛有效吗?小型猫毛空气净化器使用感受

作为一个养猫多年的猫奴&#xff0c;家里有两只可爱的小猫咪&#xff1a;小白和小花。虽然相处起来很开心&#xff0c;但也给生活带来了一些小麻烦。谁懂啊&#xff0c;我真的受够了&#xff0c;每天都在粘毛。猫窝的猫毛一周不清理就要堆成山&#xff0c;空气中也全是浮毛&…

JAVA线程中的安全性问题详解

多线程很难掌握&#xff0c;稍不注意&#xff0c;就容易使程序崩溃。我们以在路上开车为例&#xff1a; 在一个单向行驶的道路上&#xff0c;每辆汽车都遵守交通规则&#xff0c;这时候整体通行是正常的。『单向车道』意味着『一个线程』&#xff0c;『多辆车』意味着『多个 jo…

嵌入式学习---DAY18:shell脚本

shell脚本文件进程网络HtmlDb shell脚本是一系列shell命令的集合。 shell 命令解释器 shell编程&#xff1a;解释型语言、边翻译边执行、擅长文件处理,操作系统管理、开发效率高 cp 1 2、执、效率低、移植性好 C语言&#xff1a;编译型语言、先编译再执行、擅长数据计算…

【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?

欢迎来到 CILMY23 的博客 &#x1f3c6;本篇主题为&#xff1a;一篇总结&#xff01;什么是重定向&#xff1f;输出重定向的作用是什么&#xff1f;什么又是追加重定向&#xff1f; &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Py…

绘制图层的图形全部都在geojson图层之下会被覆盖,同步graphic类型使用说明

### 绘制图层js const graphicLayer new mars3d.layer.GraphicLayer({zIndex: 1000000000000000000000000,hasEdit: false,isAutoEditing: false, // 绘制完成后是否自动激活编辑// addHeight: 1,allowDrillPick: false, }) 绘制方法js graphicLayer.startDraw({type: type,st…

一款免费的Windows 11/10系统常见问题修复工具

FixWin是一款功能强大的Windows系统修复工具&#xff0c;免费便携&#xff0c;无需安装即可使用。FixWin旨在帮助用户解决各种常见的Windows问题。它提供了多种修复选项和故障排除功能&#xff0c;适用于 Windows 11/10。 FixWin 主要功能&#xff1a; 系统文件检查器&#x…

深⼊理解指针(3)

1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. 函数指针数组 6. 转移表 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 ⼀般使⽤: char* 这两种方式都是把字符串中的首字符的地址赋值给pc。 在这串代码中 str1内容的地…

JVM高级特性

JVM高级特性 内存管理 jvm是自动内存管理的 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些…

基于STM32的智能仓储管理系统教程

目录 引言环境准备智能仓储管理系统基础代码实现&#xff1a;实现智能仓储管理系统 物品识别与追踪模块环境监控模块数据处理与存储模块用户界面与远程管理应用场景&#xff1a;仓储管理与优化常见问题与解决方案收尾与总结 引言 随着电子商务和物流行业的快速发展&#xff…

C++手撕简易vector

提前准备工作 由于vector跟string不同&#xff0c;vector是可以存储不同类型的变量的容器&#xff0c;因此实现类模板是肯定的 在原本的STL的vector容器中&#xff0c;主要成员变量有&#xff0c;start&#xff0c;finish&#xff0c;和 end_of_storage 所以 template<cl…

leetcode 2415.反转二叉树的奇数层

1.题目要求: 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。例如&#xff0c;假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &#xff0c;那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。 反转后&#xff0c;返回树的根节点。完美 二叉…

SolverLearner:提升大模型在高度归纳推理的复杂任务性能,使其能够在较少的人为干预下自主学习和适应

SolverLearner&#xff1a;提升大模型在高度归纳推理的复杂任务性能&#xff0c;使其能够在较少的人为干预下自主学习和适应 提出背景归纳推理&#xff08;Inductive Reasoning&#xff09;演绎推理&#xff08;Deductive Reasoning&#xff09;反事实推理&#xff08;Counterf…

npm ERR! missing script: serve

报错原因&#xff1a;我这里是因为跑错命令了&#xff0c;我用的npm run serve 解决办法&#xff1a;去package.json文件里面找到对应的serve命令运行即可&#xff0c;每个系统都不太一样&#xff0c;如果还不行可以看看是不是项目终端搞错了&#xff0c;比如我这个项目有两个前…

行为型设计模式3:模板方法/备忘录/解释器/迭代器

设计模式&#xff1a;模板方法/备忘录/解释器/迭代器 (qq.com)

无需提示的思考链推理:深度探索大型语言模型的内在能力

人工智能咨询培训老师叶梓 转载标明出处 在人工智能领域&#xff0c;提升大模型&#xff08;LLMs&#xff09;的推理能力一直是研究的重点。传统的方法主要依赖于特定的提示技术&#xff0c;例如少量样本或零样本的思考链&#xff08;CoT&#xff09;提示。这些方法虽然有效&am…

力扣爆刷第169天之TOP200五连刷111-115(课程表、单词搜索、归并)

力扣爆刷第169天之TOP200五连刷111-115&#xff08;课程表、单词搜索、归并&#xff09; 文章目录 力扣爆刷第169天之TOP200五连刷111-115&#xff08;课程表、单词搜索、归并&#xff09;一、207. 课程表二、LCR 125. 图书整理 II三、402. 移掉 K 位数字四、79. 单词搜索五、9…