当前位置: 首页 > news >正文

【QED】等式构造

文章目录

  • 题目
    • 题目描述
    • 输入输出格式
    • 数据范围
    • 测试样例
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度

题目

题目链接🔗

题目描述

有关 「上述等式为何正确」 的问题解决了,然而 「如何构造出上述那种让人啼笑皆非的正确等式」 成为了一个新的问题。

我们认为这个问题太难了,因此我们把解决这个问题的任务交给了你,相信你可以完成这个任务:给出一个整数 n n n,求出一组整数 x x x y y y z z z,满足 x − y ÷ z = n ! x-y÷z=n! xy÷z=n! ( x − y ) ÷ z = n (x-y)÷z=n (xy)÷z=n

注意, z z z 应为正数。如果有多种可能的答案,输出任意⼀种即可。

输入输出格式

【输入格式】

输入共一行一个整数 n n n

【输出格式】

输出共一行三个整数 x x x y y y z z z,代表满足 x − y ÷ z = n ! x-y÷z=n! xy÷z=n! ( x − y ) ÷ z = n (x-y)÷z=n (xy)÷z=n 的一组整数( z z z为正整数)。三者两两之间以一个空格隔开。

数据范围

0 < n ≤ 11 0 < n \le 11 0<n11 − 1 0 9 ≤ x -10^9 \le x 109x y ≤ 1 0 9 y \le 10^9 y109 1 ≤ z ≤ 1 0 9 1 \le z \le 10^9 1z109

测试样例

input1:

5

output1:

230 220 2

input2:

1

output2:

2 1 1

思路

题目要求满足:
x − y ÷ z = n ! x-y÷z=n! xy÷z=n! ( x − y ) ÷ z = n (x-y)÷z=n (xy)÷z=n y = k ⋅ z y=k·z y=kz k k k 为整数,上面两个式子联立后消去 ,可得: n ! + h = k ⋅ z + n ⋅ 2 n!+h=k·z+n·2 n!+h=kz+n2 z = n ! + k n + k z=\frac{n!+k}{n+k} z=n+kn!+k分子变形加上一个 n n n 再减去一个 n n n 得: z = n + k + n ! − n n + k = 1 + n ! − n n + k z=\frac{n+k+n!-n}{n+k}=1+\frac{n!-n}{n+k} z=n+kn+k+n!n=1+n+kn!n由于 k为整数,此外没有太多其他约束,而考虑到 z ≥ 1 z\geq1 z1 旦对于此式我们只需要求出一组特解即可满足题意,我们可以注意到当 n ! − n n + k = 1 \frac{n!-n}{n+k}=1 n+kn!n=1 时等式成立。这一步是构造的关键。当然我们也可以寻求其他特解,如考虑到 n ! − n n + k \frac{n!-n}{n+k} n+kn!n的分子可以被 n n n整除,我们直接令分母中的 k = 0 k=0 k=0,此时 z = ( n − 1 ) ! z=(n-1)! z=(n1)!也为整数使用 n ! − n n + k = 1 \frac{n!-n}{n+k}=1 n+kn!n=1的特解,可得: k = n ! − 2 n k=n!-2n k=n!2n k k k代入上述方程得: x = 2 n ! − 2 n x=2n!-2n x=2n!2n y = 2 n ! − 4 n y=2n!-4n y=2n!4n z = 2 z=2 z=2
(思路来源于《2024年广东工业大学揭阳校区ACM新生程序设计竞赛题解》)

代码

#include <iostream>
using namespace std;// 计算阶乘的函数
long long fact(long long x) {long long res = 1;for (long long i = 1; i <= x; i++)res *= i;return res;
}int main() {long long n;cin >> n;// 计算 x 和 y 的值long long x = 2 * (fact(n) - n);long long y = 2 * (fact(n) - 2 * n);// 输出结果cout << x << ' ' << y << ' ' << 2;return 0;
}

复杂度分析

时间复杂度

计算阶乘的时间复杂度为 O ( n ) O(n) O(n)

空间复杂度

使用了常数个额外变量,空间复杂度为 O ( 1 ) O(1) O(1)

http://www.lryc.cn/news/510957.html

相关文章:

  • Kafka数据迁移全解析:同集群和跨集群
  • Debian安装配置RocketMQ
  • vue之axios基本使用
  • 三只脚的电感是什么东西?
  • 【数据库学习笔记】SQL触发器(例题+代码)
  • Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果
  • BAPI_BATCH_CHANGE在更新后不自动更新批次特征
  • 顶会评测集解读-AlignBench: 大语言模型中文对齐基准
  • MySQL外键类型与应用场景总结:优缺点一目了然
  • 【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的网上书店管理系统的设计与实现
  • 力扣面试题 - 40 迷路的机器人 C语言解法
  • ElementPlus 自定义封装 el-date-picker 的快捷功能
  • 二百八十二、ClickHouse——删除Linux中的ClickHouse
  • c++ 命名空间使用规则
  • 从 ELK Stack 到简单 — Elastic Cloud Serverless 上的 Elastic 可观察性
  • Pandas系列|第二期:Pandas中的数据结构
  • Hadoop中MapReduce过程中Shuffle过程实现自定义排序
  • 数位dp-acwing
  • 智慧园区小程序开发制作功能介绍
  • STM32高级 物联网之Wi-Fi通讯
  • LLM预训练recipe — 摘要版
  • 波动理论、传输线和S参数网络
  • nginx-1.23.2版本RPM包发布
  • 如何用WPS AI提高工作效率
  • LabVIEW应用在工业车间
  • Elasticsearch:normalizer
  • 动态规划子序列问题系列一>等差序列划分II
  • 48页PPT|2024智慧仓储解决方案解读
  • 低代码开源项目Joget的研究——Joget8社区版安装部署
  • upload-labs关卡记录15