UVA10976 分数拆分 Fractions Again?! 题解
Content
给定正整数 \(k\),找到所有的正整数 \(x \geqslant y\),使得 \(\frac{1}{k}=\frac{1}{x}+\frac{1}{y}\)。
数据范围:\(0<k\leqslant 10^4\)。
Solution
我们考虑直接暴力枚举,那么如何枚举?又如何确定枚举的上界与下界?
由于题目中给出的要求 \(x\geqslant y\),因此我们可以考虑枚举 \(y\),然后显然要使得 \(y>k\),因此我们枚举的下界就是 \(k+1\),那么枚举的上界是什么呢?显然是在 \(x=y\) 的时候就不能够再去枚举了,因为如果 \(y\) 再向后枚举的话就不能够保证 \(x\geqslant y\)。而又由于在这个时候 \(\frac{1}{k}=\frac{1}{x}+\frac{1}{y}\),因此 \(y\) 此时就是 \(2k\)。因此我们枚举的范围就是 \([k+1,2k]\)。我们发现这么枚举是 \(\mathcal O(k)\) 的,再看数据范围,显然 \(10^4\) 的复杂度不会爆炸,因此就可以通过这么愉快的枚举通过此题了。
Code
int n;
ii gcd(int a, int b) {return !b ? a : gcd(b, a % b);}
int main() {
while(scanf("%d", &n) == 1) {
vector<pii> ans;
F(int, i, n + 1, n * 2) {
int fm = i * n, fz = n - i;
int gg = gcd(fm, fz);
fm /= gg, fz /= gg;
if(fz == 1) ans.push_back(make_pair(-fm, i)); //第一项一定要先去相反数再放入 pair!!!因为这是 pair 的特性
}
println((int)ans.size());
F(int, i, 0, (int)ans.size() - 1) printf("1/%d = 1/%d + 1/%d\n", n, ans[i].fi, ans[i].se);
}
}
UVA10976 分数拆分 Fractions Again?! 题解的更多相关文章
- 洛谷P1458 顺序的分数 Ordered Fractions
P1458 顺序的分数 Ordered Fractions 151通过 203提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 输入一个 ...
- NYOJ 66 分数拆分
分数拆分 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y. 输入 第一行输入一个 ...
- 洛谷——P1458 顺序的分数 Ordered Fractions
P1458 顺序的分数 Ordered Fractions 题目描述 输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1, ...
- nyoj_66_分数拆分_201312012122
分数拆分 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y. 输 ...
- 洛谷 P1458 顺序的分数 Ordered Fractions
P1458 顺序的分数 Ordered Fractions 题目描述 输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1, ...
- 分数拆分(Fractions Again?!, UVa 10976)
题目链接:https://vjudge.net/problem/UVA-10976 It is easy to see that for every fraction in the form 1k(k ...
- 7_3 分数拆分(UVa10976)<缩小枚举范围>
每一个(k>0)这种形式的分数我们总是可以找到2个正整数x和y(x >= y),使得:现在我们的问题是:给你k,请你写一个程序找出所有的x和y.Input输入含有多组测试数据(不会超过10 ...
- 分数拆分( Fractions Again, UVA 10976)-ACM
It is easy to see that for every fraction in the form (k > 0), we can always find two positive i ...
- P1458 顺序的分数 Ordered Fractions(有技巧的枚举)+C++类封装=精简代码
题目描述 输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1,请找出所有满足条件的分数. 这有一个例子,当N=5时,所有解 ...
随机推荐
- 听说你想把对象存储当 HDFS 用,我们这里有个方案...
传统的大数据集群往往采用本地中心化的计算和存储集群.比如在谷歌早期的[三驾马车]中,使用 GFS 进行海量网页数据存储,用 BigTable 作为数据库并为上层提供各种数据发现的能力,同时用 MapR ...
- C#使用Thrift作为RPC框架入门(三)之三层架构
前言 这是我们讲解Thrift框架的第三篇文章,前两篇我们讲了Thrift作为RPC框架的基本用法以及架构的设计.为了我们更好的使用和理解Thrift框架,接下来,我们将来学习一下Thrift框架提供 ...
- 应用程序池自动停止,事件查看器报错6D000780
20210913 今天中午网站突然报错,后台程序无法访问,503错误. 调查发现"应用程序池"被关闭,但是手动开启后不久,又被关闭. 本地调试没问题,所以一开始怀疑是服务器或者Ng ...
- AGC050B Three Coins
做的时候有思考到是否能转化成移动点问题,但是没有清晰的把他解释出来. NOIP的时候也一样,T3也有考虑到是否能转为差分,但是也没有清晰的写出来. 自己做题的时候应尽量保证草稿纸和思绪的清晰,而不是在 ...
- LOJ #6207 - 米缇(杜教筛+拉格朗日插值)
LOJ 题面传送门 首先将 \(\sigma_k(ij)\) 展开: \[\sigma_k(ij)=\sum\limits_{x\mid i}\sum\limits_{y\mid j}[x\perp ...
- 洛谷 P4272 - [CTSC2009]序列变换(堆)
洛谷题面传送门 u1s1 在我完成这篇题解之前,全网总共两篇题解,一篇使用的平衡树,一篇使用的就是这篇题解讲解的这个做法,但特判掉了一个点,把特判去掉在 BZOJ 上会 WA 一个点. 两篇题解都异常 ...
- R语言与医学统计图形-【15】ggplot2几何对象之线图
ggplot2绘图系统--几何对象之线图 曲线:点连线.路径曲线.时间序列曲线.模型拟合曲线...... 直线:水平直线.垂直直线.斜线. 1.曲线 对象及其参数. #路径图 geom_path(ma ...
- 27-Roman to Integer-Leetcode
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- 安装octave详解
1. 一些可以替换的库(可跳过) 默认的库安装libblas.dll.OpenBLAS-v2.6.0-0-54e7b37_dynamicarch_nt4(自动检测CPU类型) 在目录下<your ...
- printf 的 转义词 -转
\n 换行 \r 回车键 \b 退后一格 \f 换页 \t 水平制表符 \v 垂直制表符 \a 发出鸣响 \? 插入问号 \" 插入双引号 \' ...