51Nod-2173 ProjectEuler 71
2173 ProjectEuler 71
1.0 秒 131,072.0 KB 20 分 初学者3级题
考虑分数a / b,其中a和b是正整数,如果a < b且a和b的最大公约数是1,我们说他是既约真分数。
我们升序列出所有b <= 8的既约真分数:
1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8
可以发现,比3/7小的最大的既约真分数是2/5。
输入n,问满足b <= n的既约真分数,比3/7小的最大是多少?
输入
输入第一行组数T,
接下来T行,每行一个整数n。
(1 <= T <= 20)
(1 <= n <= 1000000)
输出
对于每组数据,输出两个数字a,b表示既约真分数,中间用空格隔开。
输入样例
3
8
5
1000000
输出样例
2 5
2 5
428570 999997
分析
分数q/p<3/7分数化简为q<3*p/7,由于分母p的枚举范围固定,我们想要把分子q用分母p表示出来。由于q<3*p/7
,分子最大值可以取q=(3*p-1)/7
,让分子 -1
用一个r和s去不断更新p在枚举过程中分数q/p的最大值,只要满足
r/s<q/p,也即r * p<s *q就更新r和s的值,直到枚举结束,输出r和s对应的值.
其实,这里q也可以取其他值,比如-0.005也AC
q=(3*p-0.005)/7;
代码
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;int T,n,q;int main(){cin>>T;while(T--){cin>>n;int r=0,s=1;//要求分子小于分母for(int p=1;p<=n;p++){q=(3*p-1)/7;if(r*p<=s*q){r=q;s=p;}}cout<<r<<" "<<s<<endl;}
}
补充知识
最大公约数的写法,但是没有用到
欧几里得辗转相除法
gcd(a,b)=gcd(a,a mod b)//a>b
最简单的最大公约数gcd的写法,递归写法如下
调用时不用区分x和y的大小
int gcd(int x,int y){if(y==0) return x;if(x<y) return gcd(y,x);else return gcd(y,x%y);
}
但是c++库函数自带最大公约数的算法,位于头文件algorithm中__gcd(x, y)
求两个数的最大公约数,如__gcd(3,9) 就返回3。
所以以后用的话直接调用__gcd,而不是自己写。
51Nod-2173 ProjectEuler 71相关推荐
- 51Nod 2188 ProjectEuler 24
考虑0, 1, 2,共3个数字的所有排列,按字典序排列为 012 021 102 120 201 210 输入n,考虑0, 1, 2, 3, 4, 5, 6, 7, 8 和 9 共10个数字的所有排列 ...
- 51Nod 2176 ProjectEuler 3 c/c++题解
题目描述 13195 的质因数有 5, 7, 13 和 29. 输入n,输出n最大的质因数. 输入 输入第一行组数T, 接下来T行,每行一个整数n. (1 <= T <= 20) (2 & ...
- 51Nod ProjectEuler 48
考虑求和 11+22+33+⋯+1010=1040507131711+22+33+⋯+1010=10405071317 输入n,求 11+22+33+⋯+nn11+22+33+⋯+nn 对 1010 ...
- 51Nod 1494 选举拉票(权值线段树)
http://www.51nod.com/Challenge/Problem.html#!#problemId=1494 题解 一开始有start个人投自己,num表示当前已经收买了多少人,从大到小枚 ...
- 51nod 省选联测 R2
51nod 省选联测 R2 上场的题我到现在一道都没A,等哪天改完了再写题解吧,现在直接写第二场的. 第二场比第一场简单很多(然而这并不妨碍我不会做). A.抽卡大赛:http://www.51nod ...
- Problem 71:Ordered fractions
Problem 71:Ordered fractions 题目链接:http://static.projecteuler.net/problem=71 题目大意:将所有形如$\frac{n}{d}(d ...
- 【胡搞的不能AC的题解,暴力搜索一发博弈问题】1995 三子棋 - 51Nod
1995 三子棋 题目来源: syu校赛 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 原题链接: https://www.51nod.com/onlineJudge/ ...
- 51Nod——T 1631 小鲨鱼在51nod小学
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1631 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 ...
- 计算机考研大学报录比,2022考研:71所院校历年考研报录比汇总!
小编给22考研的小伙伴整理了71所院校报录比,清楚报录比,才能更好的选对院校,祝大家成功上岸!金程考研小编给大家分享下:2022考研:71所院校历年考研报录比汇总!希望对大家有帮助~ 加小助手微信(备 ...
最新文章
- UVa11770 - Lighting Away(排序+DFS)
- Oracle入门(三B)之11G新特性 SYSASM 角色用来管理ASM
- 《C++ Primer 第五版》第二章(1-4小节)------基本内置类型,初始化和赋值及声明和定义,指针和引用,const和constexpr
- Python Pycharm Anacanda 区别
- IE浏览器开发人员工具怎么使用
- 信息服务器怎么恢复,服务器数据恢复怎么弄
- vue实现搜索框搜索新增_基于Vue el-autocomplete 实现类似百度搜索框功能_含真_前端开发者...
- [HeadFirst-HTMLCSS学习笔记][第八章扩大你的词汇量]
- String replaceAll()
- 微信小程序登陆注册界面前后端完整代码展示
- 云盘行业的“冰与火”
- linux下添加用户并开通samba访问
- django项目-自助饮料机
- UML图学习之五 序列图(顺序图)和协作图
- 【linux/shell】Centos7环境搭建、服务器搭建(脚本)
- CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程
- python3 打印目录下所有模块_使用 Python 函数进行模块化
- 数字化转型服务管理与VeriSM(1):灵魂三问
- Apscheduler结合flask进行动态任务管理
- 全新的Unity移动游戏优化解决方案
热门文章
- java(13)内部类
- 柯里化(Curing)
- 由隐藏层节点数引起的网络准确率的不规则变化02
- TCL with SNPS sizeof_collectionget_object_namefindget_libslist_attributes
- 类和对象——对象特性——this指针的用途
- 【整理】电容知识小结(二)
- 【声源定位】 球面散乱数据插值方法/似然估计hybrid spherical interpolation/maximum likelihood (SI/ML) 麦克风阵列声源定位
- 3.MATLAB界面介绍
- stm32 keil下不重启进行仿真寻找bug原因
- 译:Spring Data Repository 不区分大小写查询