Acwing.1360 有序分数(递归or最小公因数)

news2024/11/16 18:46:53

题目

给定一个整数 N,请你求出所有分母小于或等于 N,大小在 [0,1]范围内的最简分数,并按从小到大顺序依次输出。

例如,当 N=5时,所有满足条件的分数按顺序依次为:

在这里插入图片描述

输入格式

共一行,包含一个整数 N。

输出格式

按照从小到大的顺序,输出所有满足条件的分数。

每个分数占一行,格式为 a/b,其中 a 为分子, b为分母。

数据范围

1≤N≤160

  • 输入样例:
5
  • 输出样例:
0/1
1/5
1/4
1/3
2/5
1/2
3/5
2/3
3/4
4/5
1/1

题解

最小公因数搜索

import java.util.*;

/**
 * @author akuya
 * @create 2024-03-17-21:43
 */
public class Main {
    static int N=160;
    static List<PII> list=new ArrayList<>();
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        for(int i=1;i<=n;i++)
            for(int j=0;j<=i;j++)
                if(gcd(j,i)==1)
                    list.add(new PII(j,i));


        Collections.sort(list, new Comparator<PII>() {
            @Override
            public int compare(PII o1, PII o2) {
                return o1.a*o2.b-o1.b*o2.a;
            }
        });

        for(PII tp:list){
            System.out.println(tp.a+"/"+tp.b);
        }


    }


    public static int gcd(int a,int b){
        return b!=0 ? gcd(b,a%b):a;
    }
}

class PII{
    int a;
    int b;

    public PII(int a, int b) {
        this.a = a;
        this.b = b;
    }
}

Stern-Brocot Tree(不用理解,会用就行,一个数学原理)

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int n;

void dfs(int a, int b, int c, int d)
{
    if (a + c > n) return;

    dfs(a, b, a + c, b + d);
    printf("%d/%d\n", b + d, a + c);
    dfs(a + c, b + d, c, d);
}

int main()
{
    scanf("%d", &n);

    puts("0/1");
    dfs(1, 0, 1, 1);
    puts("1/1");

    return 0;
}

作者:yxc
链接:https://www.acwing.com/activity/content/code/content/8041023/
来源:AcWing

思路

首先这是一道非常简单的题,因为数据量只有160,通过暴力也可以轻松通过,通过遍历再判断是否互质最后排序即可。

另一种思路是运用了Stern-Brocot Tree,一种数学思路模型,具体结果如下图,使用该方法就可以从小打大递归出所有的满足最简分数。具体方法流程如下图。
在这里插入图片描述
遍历函数具有两个参数a/b,c/d,那么a+c/b+d就是我们需要的函数,然后据需递归下去即可。

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

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

相关文章

十二、Transformer(Attention Mechanism)

参考Transformer详解 和 Transforner模型详解 1 Transformer 整体结构 Transformer 由 Encoder 和 Decoder 两个部分组成&#xff0c;Encoder 和 Decoder 都包含 6 个 block。 ​ 2 Transformer 局部结构 2.1 输入层 Transformer 中的输入层是由单词的 Word Embedding 和 …

传统电力运维企业的数字化转型案例

一. 传统电力运维企业面临的主要问题 上海某电力集团企业下属有成套设备公司、电力工程公司&#xff0c;依托于自身的设备制造和工程服务能力&#xff0c;以及多年积累的终端客户资源&#xff0c;几年前该公司成立了电力运维服务公司进入用户侧电力托管运维服务行业。 该公司…

4-激活函数:给机器注入灵魂

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享&#xff0c;严禁他用&#xff01;&#xff01;如有侵权&#xff0c;请联系删除 目录 一、知识引入 &#xff08;一&#xff09;背景 &#xff08;二&#xff09;激活函数 &#xff08…

vulhub中DNS域传送漏洞复现

DNS协议支持使用axfr类型的记录进行区域传送&#xff0c;用来解决主从同步的问题。如果管理员在配置DNS服务器的时候没有限制允许获取记录的来源&#xff0c;将会导致DNS域传送漏洞。 环境搭建 Vulhub使用Bind9来搭建dns服务器&#xff0c;但不代表只有Bind9支持AXFR记录。运行…

知识管理系统(KMS)和AI的融合十大场景

我向AI问了一个问题&#xff0c;KMS和AI融合有哪些场景&#xff0c;不得不说AI越来越强大了&#xff0c;他给我列出了十个场景&#xff0c;老铁们知道有哪些可以落地的吗&#xff1f; 将知识管理系统&#xff08;KMS&#xff09;与人工智能&#xff08;AI&#xff09;融合有着广…

ELK集群实战

1、 Elasticsearch集群部署 服务器 安装软件主机名IP地址系统版本配置ElasticsearchElk10.12.153.180centos7.5.18042核4GElasticsearchEs110.12.153.178centos7.5.18042核4GElasticsearchEs210.12.153.179centos7.5.18042核4G 2、创建运行的ES普通用户 3、上传es的数据包 …

代码随想录阅读笔记-哈希表【三数之和】

题目 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且不重复的三元组。 注意&#xff1a; 答案中不可以包含重复的三元组。 示例&#xff1a; 给定数…

spring注解驱动系列--AOP探究一

一、AOP--动态代理 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 二、使用栗子 一、导入aop模块 <dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>4…

数据在内存的存储

整数在内存中的存储 我们来回顾一下&#xff0c;整数在计算机是以补码的形式进行存储的&#xff0c;整数分为正整数和负整数&#xff0c;正整数的原码、反码和补码是一样的&#xff0c;负整数的原码、反码和补码略有不同&#xff08;反码是原码除符号位&#xff0c;其他位按位取…

注册-前端部分

前提:后端jar环境、Vue3环境、Redis环境 搭建页面(html标签、css样式) → 绑定数据与事件(表单校验) → 调用后台接口(接口文档、src/api/xx.js封装、页面函数中调用) Login.vue文件: <script setup> import { User, Lock } from "@element-plus/icons-…

【Axure高保真原型】多色知识图谱

今天和大家分享中继器版多色知识图谱的原型模板&#xff0c;鼠标拖动节点&#xff0c;对应节点会跟随鼠标移动&#xff0c;和相关节点对应的连接线也会自动调整&#xff1b;节点圆是多色的&#xff0c;案例中包括红、黄、浅蓝、深蓝、绿、青、紫、灰色&#xff0c;后续可以根据…

Java代码基础算法练习-数制转换-2024.03.18

任务描述&#xff1a; 输入一个 10 进制正整数n(取值范围:0<n<1000)&#xff0c;然后输出它所对应的八进制(要求用模除取余&#xff0c;不得直接转换输出) 任务要求&#xff1a; 十进制数转八进制数的思想&#xff1a; 十进制数转八进制数的思想主要基于“除基取余”法&…

kingbase 服务器配置(参数修改)

引言&#xff1a; 人大金仓作为国产数据库的佼佼者(单机)&#xff0c;也是每位数据库从业者必须数据库之一 配置文件 kingbase 参数配置 主要由 kingbase.conf 和 kingbase.auto.conf 设置 kingbase.conf 该参数文件为主配置文件&#xff0c;一般情况下&#xff0c;需要 重启…

HarmonyOS(鸿蒙)快速入门

一:下载开发工具 鸿蒙的开发工具叫DevEco 下载点击 其他部分都一直next 就行,这个页面出现的install 建议都点击install 然后单独选择安装目录 可能存在的问题 就是之前安装nodejs&#xff08;比如自己开发web或者RN等情况&#xff09;版本低 等情况 所以建议你单独安装一次 …

Linux chapter1 常用命令 cp

note 1 : netstat、curl、ip、nmap、dig 这些都是常用的网络诊断工具&#xff0c;它们的全称如下&#xff1a; netstat&#xff1a;Network Statistics&#xff0c;网络统计&#xff0c;用于显示网络连接&#xff0c;路由表&#xff0c;网络接口统计等网络信息。curl&#xf…

Springboot 博客_001 环境准备(VS code版本)

本人喜欢用vs coder&#xff08;免费又好用&#xff09;, 所以以下拿vs coder配置开发 安装JDK17 下载JDK17 https://www.oracle.com/java/technologies/downloads/#jdk17-windows 安装JDK17 标题双击运行&#xff0c;一路默认 删除原本的环境变量 配置环境变量 查看是否安…

PTA L2-018 多项式A除以B

这仍然是一道关于A/B的题&#xff0c;只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R&#xff0c;其中R的阶数必须小于B的阶数。 输入格式&#xff1a; 输入分两行&#xff0c;每行给出一个非零多项式&#xff0c;先给出A&#xff0c;再给出B。每行的格式如下…

了解抖音小程序与抖音小店的区别

首先&#xff0c;从功能和定位上来看&#xff0c;抖音小店是抖音官方推出的一种功能&#xff0c;专为商家提供在抖音平台上销售商品的工具。而抖音小程序则是一种无需下载即可使用的应用&#xff0c;类似于微信小程序&#xff0c;但主要在抖音、头条、极速版头条等平台上运行。…

逻辑回归LogisticRegression quickstart

本文将用可视化思路理解逻辑回归 数学背景 比如我们认定一个的值只可能在[0, 1], 那当小于0.5&#xff0c;我们认为他就是a&#xff0c;当大于0.5&#xff0c;我们认为他就是b 数据集 使用鸢尾花数据集 4个特征值3个类别 二分类&#xff0c;单维度 只使用一个特征X ir…

Linux docker3--数据卷-nginx配置示例

一、因为docker部署服务都是以最小的代价部署&#xff0c;所以通常在容器内部很多依赖和命令无法执行。进入容器修改配置的操作也比较麻烦。本例介绍的数据卷作用就是将容器内的配置和宿主机文件打通&#xff0c;之后修改宿主机的配置文件就相当于修改了docker进程的配置文件&a…