欧拉计划44题

news/2024/11/16 13:37:20/

 

Pentagon numbers

Pentagonal numbers are generated by the formula, P_n = n * (3 * n - 1) / 2. The first ten pentagonal numbers are:

1,5,12,22,35,51,70,92,117,145,…

It can be seen that P_4 + P_7 = 22 + 70 = 92 = P_8. However, their difference, 70−22=48, is not pentagonal.

Find the pair of pentagonal numbers, P_j and P_k, for which their sum and difference are pentagonal and D=|P_k - P_j| is minimised; what is the value of D?

五边形数

五边形数由公式P_n = n * (3 * n - 1) / 2给出。前十个五边形数是:

1,5,12,22,35,51,70,92,117,145,…

可以看出P_4 + P_7 = 22 + 70 = 92 = P_8。然而,它们的差70−22=48并不是五边形数。

在所有和差均为五边形数的五边形数对P_jP_k中,找出使D=|P_k - P_j|最小的一对;此时D的值是多少?

        这个题的难度不在于求D的值,在于枚举上界,那么问题的上界是多少?

        假设D就是求到的最小解

        假设k比j大,那么P_k - P_{k - 1} >= D说明k没有枚举的必要了 ,P_k - P_j >= D说明j没有枚举的必要了;

        为什么因为D要求的是最小值,而P_n会随着n的变大而变大那么,P_k - P_{k - 1} = 3k - 2通过发现,P_k - P_{k - 1}会随着k增大而增大;

        而j是从k-1开始的,那么反过来,j越小,那么P_k - P_{j}就越大,说明也没有枚举的必要了,假如j = k-1时,P_k - P_j >= D同理P_k - P_{k - 1} >= D

        通过上面的两个推倒可以发现,求到的第一个满足差和都位5边形数就是最小的D值;

        那么下面是代码实现:

 

#include <stdio.h>
#include <math.h>
#define MAX_N 1000000double func(int x) {//五边形数的反函数return (sqrt(2.0 * x / 3 + 1.0 / 36.0) + 1.0 / 6.0);
}int Pentagon(int x) {//求五边形数函数return x * (3 * x - 1) / 2;
}int is_true(int i, int j) {long long p_k = Pentagon(i);long long p_j = Pentagon(j);double num1 = func(p_k - p_j);double num2 = func(p_k + p_j);if (num1 != floor(num1)) return 0;//没有找到他们和的五边形数if (num2 != floor(num2)) return 0;//没有找到他们差的五边形数return 1;
}int main() {int flag = 0;for (int i = 2; i <= MAX_N; i++) {for (int j = i - 1; j > 0; j--) {if (!is_true(i, j)) continue;printf("%d\n", Pentagon(i) - Pentagon(j));flag = 1;break;}    if (flag) break;}return 0;
}

 最终答案:5482660


http://www.ppmy.cn/news/1050078.html

相关文章

课程项目设计--spring security--用户管理功能--宿舍管理系统--springboot后端

写在前面&#xff1a; 还要实习&#xff0c;每次时间好少呀&#xff0c;进度会比较慢一点 本文主要实现是用户管理相关功能。 前文项目建立 文章目录 验证码功能验证码配置验证码生成工具类添加依赖功能测试编写controller接口启动项目 security配置拦截器配置验证码拦截器 …

初学者SpringBoot+Vue打通前后端详细步骤(从零开始)

目录 前言介绍 一、整体流程介绍 二、后端SpringBoot项目创建 三、前端Vue项目创建 四、前后端连接 &#xff08;一&#xff09;后端配置 &#xff08;二&#xff09;前端配置 &#xff08;三&#xff09;前端页面与后端实体属性绑定并发起请求 五、前后端打通页面 前…

7-10 查验身份证

分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c…

使用python实现输出iOS图标文件AppIcon.appiconset

要实现这个功能&#xff0c;你可以使用Python的PIL库来处理图片&#xff0c;并使用json库来生成Contents.json文件。以下是一个示例代码&#xff1a; from PIL import Image import jsondef generate_app_icons(image_path, output_path):# 定义不同尺寸的App Icon大小sizes …

prometheus blackbox_exporter安装

目录 一、准备工作1.1 安装或关闭以下服务1.2 本次安装环境 二、安装blackbox_exporter2.1 下载并解压2.2配置2.3测试 三、配置blackbox_exporter3.1配置blackbox.yml3.2 开启blackbox_exporter3.3配置prometheus.yml 四、其他4.1server returned HTTP status 400 Bad Request …

使用 useEffect 和 reactStrictMode:优化 React 组件的性能和可靠性

使用useEffect和React.StrictMode是一种优化React组件性能和可靠性的常见做法。下面是关于如何使用这两个特性的示例&#xff1a; import React, { useEffect } from react;function MyComponent() {useEffect(() > {// 在组件挂载/更新时执行的副作用代码// 可以进行数据获…

c++基础系列:字符串、向量和数组

字符串、向量和数组 命名空间的using声明 目前用到的库函数基本上都属于命名空间std&#xff1b;通过using声明&#xff08;using declaration&#xff09;实现更简单的途径使用到命名空间中的成员。 标准库类型string string表示可变长的字符序列&#xff0c;必须先包含st…

Java“牵手”根据商品ID获取京东商品评论数据方法,API实现批量商品评论内容数据抓取示例

京东商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取京东商品详情页面评价内容数据&#xff0c;您可以通过开放平台的接口或者直接访问京东商城的网页来获取商品详情信息内的评论数据。以下是两种常用方法…