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

欧拉计划 Project Euler53(组合选择)题解

欧拉计划 Project Euler 53 题解

  • 组合选择
    • 问题:
  • 思路
    • code
  • 答案

组合选择

从五个数中选择三个,恰好有十种方式,分别是:
( 5 3 ) = 10 \binom{5}{3}=10 (35)=10在组合数学中,我们记作: ( n r ) \binom{n}{r} (rn)
一般来说,组合数公式为: ( n r ) = n ! r ! ( n − r ) ! \binom{n}{r}=\frac{n!}{r!(n-r)!} (rn)=r!(nr)!n!

其中:

  • n n n:表示总数
  • r r r:表示要选择的数目
  • ( n r ) \binom{n}{r} (rn):表示从 n n n 个数中选出 r r r 个数的组合数
  • 0 ≤ r ≤ n 0\leq r\leq n 0rn

n = 23 n=23 n=23 时,首次出现超出一百万的组合数:
( 23 10 ) = 1144066 \binom{23}{10}=1144066 (1023)=1144066


问题:

对于 n ≤ 100 n\leq100 n100,有多少个不同形式的组合数 ( n r ) > 1 , 000 , 000 \binom{n}{r}>1{,}000{,}000 (rn)>1,000,000


思路

两个for循环暴力求解即可,注意溢出问题的处理,具体看代码

code

// 4075
#include <bits/stdc++.h>using namespace std;using ll = long long;const int N = 1000000;ll C(int n, int k) {ll ans = 1;for (int i = 1; i <= k; ++i) {ans = ans * (n - i + 1) / i;if (ans > N) return ans; // 可能会溢出long long 若大于提前终止即可}return ans;
}bool check(int n, int k) {return C(n, k) > N;
}void solve() {ll ans = 0;for (int i = 1; i <= 100; ++i) {for (int j = 0; j <= i / 2; ++j) {if (check(i, j)) {if (j == i - j) ans++; // 中点else ans += 2;}}}cout << ans << "\n";}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int tt = 1; // cin >> tt;while (tt--) {solve();}return 0;
}

答案

4075 \boxed{4075} 4075

http://www.xdnf.cn/news/1162.html

相关文章:

  • 零基础上手Python数据分析 (21):图表选择困难症?常用可视化类型详解与应用场景指南
  • Python简介
  • 121.在 Vue3 中使用 OpenLayers 实现去掉鼠标右键默认菜单并显示 Feature 信息
  • java实现 PDF中的图片文字内容识别
  • 黑马点评之Feed流技术实现关注推送与滚动分页查询
  • MQTTX + MCP:MQTT 客户端秒变物联网 Agent
  • 凤凰架构-笔记
  • 如何在 Java 中从 PDF 文件中删除页面(教程)
  • wps批量修改字体
  • 极狐GitLab 权限和角色如何设置?
  • element-ui、element-plus表单resetFields()无效的坑
  • 研发效率破局之道阅读总结(3)工程优化
  • OpenVINO教程(二):图片目标检测推理应用
  • IDEA创建Gradle项目然后删除报错解决方法
  • [PTA]2025 CCCC-GPLT天梯赛 胖达的山头
  • 基于ssm的新冠疫情下基于java的校园出入系统(源码+文档)
  • 双卡 4090 服务器租用:释放强算力的新选择​
  • 代理模式(Proxy Pattern)详解:以延迟加载图片为例
  • 2.5 函数的拓展
  • 联易融科技:以科技赋能驱动经营反转与价值重估
  • Java多线程编程初阶指南
  • Swiper、样式结构重用、GridGridItem
  • 力扣每日打卡17 49. 字母异位词分组 (中等)
  • SpringMVC入门
  • 17.2Linux的MISC驱动实验(编程)_csdn
  • C#使用sftp远程拷贝文件
  • 417. 太平洋大西洋水流问题
  • 什么是机器视觉3D无序堆叠抓取
  • 谷歌推出探索型推荐新范式:双LLM架构重塑用户兴趣挖掘
  • 精益数据分析(13/126):洞察数据关系,灵活调整创业方向