Project_Euler-45 题解

news2024/11/18 23:42:44

Project_Euler-45 题解

标题

题目

1
2

思路

非常简单,枚举六边形数字,然后判断他们是不是三角形和五边形数,如果是,那么输出。

代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <time.h>

typedef long long ll;

ll triangle(ll n) {
    return (n * (n + 1)) >> 1;
}

ll pentagonal(ll n) {
    return (n * (3 * n - 1)) >> 1;
}

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

ll is_triangle(ll n) {
    printf("is_triangle: %lld...\n", n);
    ll head = 1, tail = n, mid;
    while (head <= tail) {
        mid = (head + tail) >> 1;
        if (triangle(mid) == n) return 1;
        if (triangle(mid) < n) head = mid + 1;
        else tail = mid - 1;
    }
    printf("is_triangle: %lld is not a triangle.\n", n);
    return 0;
}

ll is_pentagonal(ll n) {
    printf("is_pentagonal: %lld...\n", n);
    ll head = 1, tail = n, mid;
    while (head <= tail) {
        mid = (head + tail) >> 1;
        if (pentagonal(mid) == n) return 1;
        if (pentagonal(mid) < n) head = mid + 1;
        else tail = mid - 1;
    }
    printf("is_pentagonal: %lld is not a pentagonal.\n", n);
    return 0;
}

ll main() {
    ll num = 0;
    for (ll i = 2; num < 2; i++) {
        ll tar = hexagonal(i);
        if (!is_pentagonal(tar)) continue;
        if (!is_triangle(tar)) continue;
        num++;
        printf("%lldth = %lld\n", num, tar);
    }
    return 0;
}

优化思路

发现六边形数字一定是三角形数字,因此枚举六边形数字的画就不需要再判断三角形数字了。

优化代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <time.h>

typedef long long ll;

ll pentagonal(ll n) {
    return (n * (3 * n - 1)) >> 1;
}

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

ll is_pentagonal(ll n) {
    printf("is_pentagonal: %lld...\n", n);
    ll head = 1, tail = n, mid;
    while (head <= tail) {
        mid = (head + tail) >> 1;
        if (pentagonal(mid) == n) return 1;
        if (pentagonal(mid) < n) head = mid + 1;
        else tail = mid - 1;
    }
    printf("is_pentagonal: %lld is not a pentagonal.\n", n);
    return 0;
}

ll main() {
    ll num = 0;
    for (ll i = 2; num < 2; i++) {
        ll tar = hexagonal(i);
        if (!is_pentagonal(tar)) continue;
        num++;
        printf("%lldth = %lld\n", num, tar);
    }
    return 0;
}

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

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

相关文章

【详识JAVA语言】逻辑控制

概述 我的曾经&#xff1a; 早上8:00起床--->洗漱--->吃早饭--->上课--->吃午饭--->上课--->运动--->吃完饭--->玩手机--->睡觉 每天的生活貌似都是这么规律&#xff0c;顺序的做着每件事&#xff0c;前途一片渺茫~~~ 直到有一天&#xff1a; 我…

[Java 探索者之路] 一个大厂都在用的分布式任务调度平台

分布式任务调度平台是一种能够在分布式计算环境中调度和管理任务的系统&#xff0c;在此环境下&#xff0c;各个任务可以在独立的节点上运行。它有助于提升资源利用率&#xff0c;增强系统扩展性以及提高系统对错误的容忍度。 文章目录 1. 分布式任务调度平台1. 基本概念1.1 任…

snakeyaml1.x升级2.x导致项目启动报错

snakeyaml1.x升级2.x,修复漏洞 1.背景 在工作中&#xff0c;经常会有漏洞扫描&#xff0c;有一次看到了snakeyaml的漏洞&#xff1a; 项目框架&#xff1a;springBoot 版本&#xff1a;2.2.6.RELEASE snakeyaml 中央仓库信息 snakeyaml中央仓库地址&#xff1a;https://m…

基于 Amazon EKS 的 Stable Diffusion ComfyUI 部署方案

01 背景介绍 Stable Diffusion 作为当下最流行的开源 AI 图像生成模型在游戏行业有着广泛的应用实践&#xff0c;无论是 ToC 面向玩家的游戏社区场景&#xff0c;还是 ToB 面向游戏工作室的美术制作场景&#xff0c;都可以发挥很大的价值&#xff0c;如何更好地使用 Stable Dif…

程序项目打包发布方法,采用InstallShield软件

重点&#xff1a; 1.程序项目做出来了&#xff0c;需要打包发布给用户。如何打包是关键。 2.采用InstallShield软件进行发布。 步骤一&#xff1a;创建一个依赖三方库配置环境的bat文件的项目。 &#xff08;主要测试三方库打包 和如果有bat文件&#xff0c;需要先创建环境&…

YOLOv9独家原创改进|使用DySample超级轻量的动态上采样算子

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、DySample论文摘要 尽管最近的基于内核的动态上采样器如CARAFE、FADE和SAPA取得了令人印象深刻的性能提升&#xff0c;但它们引入了大量的工作量&…

Canvas笔记03:Canvas元素功能、属性、获取、原理等一文讲透

hello&#xff0c;我是贝格前端工场&#xff0c;最近在学习canvas&#xff0c;分享一些canvas的一些知识点笔记&#xff0c;本期分享canvas元素的知识&#xff0c;欢迎老铁们一同学习&#xff0c;欢迎关注&#xff0c;如有前端项目可以私信贝格。 Canvas元素是HTML5中的一个重…

加密隧道技术

在现在的互联网上传输数据&#xff0c;首要考虑的就是安全。这关乎到你的隐私&#xff0c;个人信息&#xff0c;财产安全等等重大问题。如果你的程序本身传输的信息没有加密&#xff0c;也可以通过其他辅助方式让你的通信加密。一些工具的就是为了解决这样的场景的&#xff0c;…

【二分】第k个缺失的数

第K个缺失的数 链接 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/kth-missing-positive-number/ 题目 题解 二段…

【GPU驱动开发】-mesa简介

前言 不必害怕未知&#xff0c;无需恐惧犯错&#xff0c;做一个Creator&#xff01; 一、mesa介绍 Mesa 是一个开源的3D图形库&#xff0c;它实现了多种图形API&#xff0c;包括 OpenGL、Vulkan 和 OpenCL。Mesa 的目标是提供一个开源、跨平台的图形库&#xff0c;使得开发者…

Qt/自定义控件的封装

新建文件&#xff0c;选择Qt设计师界面类 创建空界面 这是自己控件封装的文件&#xff0c;双击跳转到设计界面进行设计 跳转到其他的ui界面&#xff0c;创建一个widget 右键&#xff0c;选择提升为 在提升的类名称输入刚刚创建的类名&#xff0c;添加后选择提升&#xff0c;勾选…

WINDOWS内存管理 - 返回状态值

DDK大部分函数的返回值类型是NTSTATUS类型。查看DDK.h文件&#xff0c;可以看到 typedef LONG NTSTATUS; NTSTATUS的定义和LONG等价。为了函数的形式统一&#xff0c;所有函数的返回值都是NTSTATUS类型。NTSTATUS就是一个32位的整数&#xff0c;其每位有着不同的含义&#xf…

FCIS 2023网络安全创新大会:洞察前沿技术,探索安全新境界(附大会核心PPT下载)

随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;成为全球关注的焦点。作为网络安全领域的重要盛会&#xff0c;FCIS 2023网络安全创新大会如期而至&#xff0c;汇聚了全球网络安全领域的顶尖专家、学者、企业家和政策制定者&#xff0c;共同探讨网络安全的…

并查集学习: leetcode 2368. 受限条件下可到达节点的数目

现有一棵由 n 个节点组成的无向树&#xff0c;节点编号从 0 到 n - 1 &#xff0c;共有 n - 1 条边。 给你一个二维整数数组 edges &#xff0c;长度为 n - 1 &#xff0c;其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数组 restricted 表示…

LeetCode_Java_动态规划系列(2)(题目+思路+代码)

131.分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff1a;[["a&qu…

Redis的高性能之道

前言&#xff1a;做码农这么多年&#xff0c;我也读过很多开源软件或者框架的源码&#xff0c;在我看来&#xff0c;Redis是我看过写得最优美、最像一件艺术品的软件&#xff0c;正如Redis之父自己说的那样&#xff0c;他宁愿以一个糟糕的艺术家身份而不是一名好程序员被别人记…

【双指针】删除有序数组中重复元素,双指针原地修改数组

删除有序数组中重复元素 链接 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-duplicates-from-sorted-array/…

Programming Abstractions in C阅读笔记:p308-p311

《Programming Abstractions in C》学习第76天&#xff0c;p308-p311总结&#xff0c;总计4页。 一、技术总结 1.快速排序伪代码 #include <stdbool.h>static int Partition(int array[], int n);/** Implementation notes: SortIntegerArray* ----------------------…

实践航拍小目标检测,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建无人机航拍场景下的小目标检测识别分析系统

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测&#xff0c;基于yolov…

Django后端开发——中间件

文章目录 参考资料中间件注册中间件settings.pymiddleware/mymiddleware.pymysite3/views.pymysite3/urls.py 练习 参考资料 B站网课&#xff1a;点击蓝色字体跳转 或复制链接至浏览器&#xff1a;https://www.bilibili.com/video/BV1vK4y1o7jH?p39&vd_source597e21cf34f…