欧拉计划45题

Triangular, pentagonal, and hexagonal

Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:

Triangle            T_n = n * (n + 1) / 2        1,3,6,10,15,…

Pentagonal       P_n = n *(3 * n - 1) / 2 1,5,12,22,35,…

Hexagonal        H_n = n * (2 * n - 1)     1,6,15,28,45,…

It can be verified that T_{285} = P_{165} = H_{143} = 40755.

Find the next triangle number that is also pentagonal and hexagonal.

三角形数、五边形数和六边形数

三角形数、五边形数和六边形数分别由以下公式给出:

三角形数五边形数六边形数

三角形数        T_n = n * (n + 1) / 2        1,3,6,10,15,…

五边形数        P_n = n *(3 * n - 1) / 2 1,5,12,22,35,…

六边形数        H_n = n * (2 * n - 1)     1,6,15,28,45,…

可以验证,T_{285} = P_{165} = H_{143}=40755。

找出下一个同时是三角形数、五边形数和六边形数的数。

        这个题目,每个函数都是单调递增的,所以可以用二分法来进行解决,比如求出三角形数,然后利用二分法去查找五边形数和六边形数的n;时间复杂度为O(logn)级别;

        我准备还是用反函数去求,这样时间复杂度为O(1),这样可以节省更多时间;那么他们分别对应的反函数是:

        三角形: n = sqrt(2 * t + 1/4) - 1/2 = (sqrt(8 * t + 1) - 1) / 2

        五边形:    n = sqrt(2 * p / 3 + 1 / 36) + 1/ 6 = (sqrt(24 * p + 1) + 1) / 6

        六边形:    n = sqrt(h / 2 + 1 / 16) + 1/4 = (sqrt(8 * h + 1) + 1) / 4

        这下又了对应的反函数,那么写代码的思路也没有一点问题,下面的代码实现:

        

#include <stdio.h>
#include <math.h>

typedef long long ll;

ll Hexagonal(int n) {//六边形对应函数
    return n * (2 * n - 1);
}

int inverse_Triangle(ll x) {//三角形的反函数
    double s = (sqrt(8.0 * x + 1.0) - 1.0) / 2.0;
    if (s != floor(s)) return 0;
    return 1;
}

int inverse_Pentagonal(ll x) {//五边形的反函数
    double s = (sqrt(24 * x + 1.0) + 1.0) / 6.0;
    if (s != floor(s)) return 0;
    return 1;
}


int main() {
    for (int i = 144; i; i++) {
        ll num = Hexagonal(i);
        if (!inverse_Triangle(num)) continue;
        if (!inverse_Pentagonal(num)) continue;
        printf("%lld\n", num);
        break;
    } 
    return 0;
}

        二分的话,我直接把代码写出来把过程就不推导了;

         

#include <stdio.h>

typedef long long ll;

ll Triangle (ll n) {
    return n * (n + 1) / 2;
}

ll Pentagonal (ll n) {
    return n * (3 * n - 1) / 2;
}

ll Hexagonal (ll n) {
    return n * (2 * n - 1);
}

int func(int l, int r, ll x, ll (*func)(ll)) { 
    ll mid;
    while (r >= l) {
        mid = (r + l) >> 1;
        ll num = func(mid);
        if (num == x) return 1;
        else if (num > x) r = mid - 1;
        else l = mid + 1;
    }
    return 0;
}
 

int main() {
    for (int i = 286; i; i++) {
        ll num = Triangle(i);
        if (!func(0, i, num, Pentagonal)) continue;
        if (!func(0, i, num, Hexagonal)) continue;
        printf("%lld\n", num);
        break;
    }
    return 0;
}

最终答案: 1533776805

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性能比较 - Spring Boot 应用程序中的线程池与虚拟线程 (Project Loom)

本文比较了 Spring Boot 应用程序中的不同请求处理方法&#xff1a;ThreadPool、WebFlux、协程和虚拟线程 (Project Loom)。 在本文中&#xff0c;我们将简要描述并粗略比较可在 Spring Boot 应用程序中使用的各种请求处理方法的性能。 高效的请求处理在开发高性能后端…

镜像底层原理详解和基于Docker file创建镜像

目录 一、镜像底层原理 1.联合文件系统(UnionFS) 2.镜像加载原理 3.为什么Docker里的centos的大小才200M? 二、Dockerfile 1.简介 2.Dockerfile操作常用命令 &#xff08;1&#xff09;FORM 镜像 &#xff08;2&#xff09;MAINTAINER 维护人信息 &#xff08;3&…

电商系统架构设计系列(九):如何规划和设计分库分表?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;分库分表该如何设计&#xff1f; 今天这篇文章&#xff0c;我们来聊一下如何规划和设计分库分表&#xff0c;以及要考虑哪些问题。 引言 当要解决海量数据的问题&#xff0c;就必须要用到分布式的存储集群了&#xff…

2023.8 - java - 泛型

泛型问题的引出&#xff1a; jdk 1.5 引出泛型 // package 泛型; public class index {public static void main (String[] args){test t new test();t.setContent("aaa");int a (int) t.getContent();System.out.println(a);} }class test{Object content;publi…

RNN+LSTM正弦sin信号预测 完整代码数据视频教程

视频讲解:RNN+LSTM正弦sin信号预测_哔哩哔哩_bilibili 效果演示: 数据展示: 完整代码: import torch import torch.nn as nn import torch.optim as optim import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import…

1.jvm和java体系结构

jvm简介 JVM&#xff1a;跨语言的平台 Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早已不再是简简单单的一门计算机语言了&#xff0c;它更是一个平台、一种文化、一个社区。 ● 作为一个平台&#xff0c;Java虚拟机扮演着举足轻重的…

无涯教程-Perl - use函数

描述 此函数将MODULE导出的所有功能(或仅LIST引用的功能)导入当前包的名称空间。有效等效于- BEGIN { require "Module.pm"; Module->import(); }也用于在当前脚本上强加编译器指令(编译指示),尽管从本质上讲它们只是模块。 请注意,use语句在编译时进行判断。在…

SpringBoot 模板模式实现优惠券逻辑

一、计算逻辑的类结构图 在这张图里&#xff0c;顶层接口 RuleTemplate 定义了 calculate 方法&#xff0c;抽象模板类 AbstractRuleTemplate 将通用的模板计算逻辑在 calculate 方法中实现&#xff0c;同时它还定义了一个抽象方法 calculateNewPrice 作为子类的扩展点。各个具…

三子棋游戏

目录 主函数test.c 菜单函数 选择实现 游戏函数 &#xff08;函数调用&#xff09; 打印棋盘数据 打印展示棋盘 玩家下棋 电脑下棋 判断输赢 循环 test.c总代码 头文件&函数声明game.h 头文件的包含 游戏符号声明 游戏函数声明 game.h总代码 游戏函数ga…

spring异步框架使用教程

背景 在需求开发过程中&#xff0c;为了提升效率&#xff0c;很容易就会遇到需要使用多线程的场景。这个时候一般都会选择建一个线程池去专门用来进行某一类动作&#xff0c;这种任务到来的时候往往伴随着大量的线程被创建调用。而还有另外一种场景是整个任务的执行耗时比较长…

Sui第四轮资助:16个团队瓜分

近日&#xff0c;Sui基金会公布了第四轮开发者资助名单&#xff0c;受助项目均是集中在DeFi、支付、基础设施、游戏、预言机等领域的Sui生态项目&#xff0c;他们是从2023年7月1日之前提交的申请中选出的。在此时间之后提交的任何项目目前正在审查中。 在前三轮资助中累积发放…

Linux Kernel 4.12 或将新增优化分析工具

到 7 月初&#xff0c;Linux Kernel 4.12 预计将为修复所有安全漏洞而奠定基础&#xff0c;另外新增的是一个分析工具&#xff0c;对于开发者优化启动时间时会有所帮助。 新的「个别任务统一模型」&#xff08;Per-Task Consistency Model&#xff09;为主要核心实时修补&#…

LinkedList

LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09;LinkedList使用 LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09; 无头双向链表&#xff1a;有两个指针&#xff1b;一个指向前一个节点的地址&#xff1b;一个指向后一个节点的地址。 节点定…

PHP加密与安全的最佳实践

PHP加密与安全的最佳实践 概述 在当今信息时代&#xff0c;数据安全是非常重要的。对于开发人员而言&#xff0c;掌握加密和安全的最佳实践是必不可少的。PHP作为一种常用的后端开发语言&#xff0c;提供了许多功能强大且易于使用的加密和安全性相关函数和类。本文将介绍一些P…

快妥稳!户外拍摄,5G黑科技更给力!

随着新媒体时代的到来&#xff0c;“户外实景美学”已然成为影视创作打磨爆款作品、衍生荧屏效应的一把“杀手锏”。恢弘山川、烟雨江南、异域小城、古朴村落……从一方影棚再到“天然片场”&#xff0c;主打一个“身临其境”般更加真实的视听体验。 杭州浙文影业影视公司是一家…

【HCIP】02.MSTP

运行RSTP/STP&#xff0c;局域网内所有的VLAN共享一棵生成树&#xff0c;被阻塞后的链路将不承载任何流量&#xff0c;无法在VLAN间实现数据流量的负载均衡&#xff0c;导致链路带宽利用率、设备资源利用率较低。802.1S,MSTP兼容STP和RSTP&#xff0c;通过建立多棵无环路的树&a…

深入解析:如何打造高效的直播视频美颜SDK

在当今数字化时代&#xff0c;视频直播已经成为人们交流、娱乐和信息传递的重要方式。然而&#xff0c;许多人在直播时都希望能够呈现出最佳的外观&#xff0c;这就需要高效的直播视频美颜技术。本文将深入解析如何打造高效的直播视频美颜SDK&#xff0c;以实现令人满意的视觉效…

长胜证券:怎么看k线图?

K线图是股票、期货、外汇等金融商场中常用的一种图表方式&#xff0c;用来展示必定时刻内的价格走势。关于投资者来说&#xff0c;学会怎么正确地剖析K线图是非常重要的。本文将从多个视点来剖析怎么看K线图&#xff0c;协助投资者更好地把握商场走势和做出正确的买卖决议计划。…

ios小组件报错:Please adopt containerBackground API

iOS 17 小组件报错:Please adopt containerBackground API 使用下面的方法解决了: 代码: extension View {func widgetBackground(_ backgroundView: some View) -> some View {if #available(iOSApplicationExtension 17.0, *) {return containerBackground(for: .wi…

Allegro如何设置Net Class在物理和间距规则中同步操作指导

Allegro如何设置Net Class在物理和间距规则中同步操作指导 在用Allegro设置规则的时候,设置net class是必要的操作,时常需要在物理和间距规则都设置好Class,如果物理和间距规则中都单独去设置的话比较费时间。如下图Net Class 下面介绍如何将物理和间距规则中的Class同步起来…