最简真分数c语言,HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)...
描述
给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少?
输入
两个整数N个K。
对于30%的数据,1 <= N <= 1000000
对于100%的数据,1 <= N <= 10000000000 且 1 <= K <= φ(N)。其中φ(N)是欧拉函数,也即1~N中与N互质的数的个数。
输出
一个整数表示答案的分子
样例输入
100 10
样例输出
23
思路:
显然和欧拉函数关系不大。。。开始思路已经很接近了。分解质因子,然后二分1到Mid中与分母不互质的有多少(容斥去重)。有想到唯一分解,但是没有想到最多可以分解为多少个,万一是上万呢?然而最多可以分解为两位数个质因子,假设有2,3,5,,,(n个),则2*3*5*....*>2^n,n=10就大的不得了。
1到x有因子y的树的个数为x/y个。
容斥定理去重。
#include
#include
#include
#include
#include
#include
using namespace std;
#define ll long long
ll a[],b[],tot;//a是因子乘积,b是代表奇偶。
ll K,N,l,r,Mid,ans;
ll prim[2],cnt;
void dfs(ll x,ll y,ll num)
{
if(y==cnt+){
if(x==) return ;
a[++tot]=x;b[tot]=num&?:-;return;
}
dfs(x*prim[y],y+,num+);
dfs(x,y+,num);
}
void divide(ll x)
{
ll y=x;
for(ll i=;i*i<=x;i++){
if(y%i==) prim[++cnt]=i;
while(y%i==&&y) y/=i;
}
if(y>) prim[++cnt]=y;//唯一分解之后的剩余,可以肯定是个质数,自己反正吧。
dfs(,,);
}
bool check(ll x)
{
ll num=;
for(int i=;i<=tot;i++){
num+=x/a[i]*b[i];
}
if(x-num>=K) return true;
return false;
}
int main()
{
scanf("%lld%lld",&N,&K);
divide(N);l=;r=;
while(l<=r){
Mid=(l+r)>>;
if(check(Mid)){
ans=Mid; r=Mid-;
}
else l=Mid+;
}
printf("%lld\n",ans);
return ;
}
[Offer收割]编程练习赛39
公平分队 #pragma comment(linker, "/STACK:102400000,102400000") #include #includ ...
HihoCoder1656 : 前缀后缀查询([Offer收割]编程练习赛39)(字典树+小技巧)
描述 给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi. 现在小Hi要进行M次查询,每次查询包含一个前缀字符串Pi和一个后缀字符串Si.他希望 ...
HihoCoder1654: XY游戏([Offer收割]编程练习赛39)(好久没写搜索)(已经超级简短了)
描述 如下图所示,在4x4的棋盘上有X和Y两种棋子各若干枚:O表示空格. OXXY YOOX XOOY XOXX 小Hi每次可以选择任意一枚棋子,将它移动到上下左右相邻的空格中. 小Hi想知道最少移动 ...
HihoCoder1653 : 公平分队([Offer收割]编程练习赛39)(贪心)
描述 小Hi和小Ho在玩一个战争游戏.游戏中2N个战斗单位,其中第i个单位的战斗力是Ai. 现在小Hi和小Ho要各选N个单位组成队伍,当然他们都希望自己队伍的总战斗力越大越好. 为了使分队更加公平,经 ...
hihocoder [Offer收割]编程练习赛61
[Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...
hihocoder [Offer收割]编程练习赛4
描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...
[Offer收割]编程练习赛46
[Offer收割]编程练习赛46赛后题解 A.AEIOU 分析
hihocoder [Offer收割]编程练习赛14
A.小Hi和小Ho的礼物 谜之第1题,明明是第1题AC率比C还要低.题目是求在n个不同重量袋子选4袋,2袋给A,2袋给B,使2人获得重量相同,求问方案数. 我也是一脸懵b...o(n2)暴力枚举发现把 ...
hihocoder offer收割编程练习赛10 C 区间价值
思路: 令v[l, r](0<= l <= r < n)表示区间[l,r]的价值,则长度为n的区间的价值最少为0,最多为n*(n-1)/2.整体对价值二分,求能满足sum{v[l, ...
随机推荐
.NET平台机器学习资源汇总,有你想要的么?
接触机器学习1年多了,由于只会用C#堆代码,所以只关注.NET平台的资源,一边积累,一边收集,一边学习,所以在本站第101篇博客到来之际,分享给大家.部分用过的 ,会有稍微详细点的说明,其他没用过的, ...
深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置
上篇文章简单看了一下TypeHandler, 本次将结束对于mybatis的配置文件的学习 ...
Linux time命令
说明:喜欢写小程序的人都特别注重自己程序的执行效率,那么在Linux上,就有一个time的命令,用于测量命令的运行时间,还可以测量内存.I/O等的使用情况. 一个程序在运行时使用的系统资源通常包括CP ...
游戏 slider
using UnityEngine; using System.Collections; public class La : MonoBehaviour { float verticalValue=0 ...
图片轮播的JS写法,通用涉及多个轮播
本代码是借鉴大神的代码分析理解后,自己改写的!有不足指出希望给为大神指点. 核心只有一个JS,里面包含了css样式. 展示效果图:
Ajax+Asp.Net无刷新分页
1.新建解决方案,并建立四个项目BLL,DAL,Model,PagerTest,如图所示: 2.Model代码 using System; using System.Collections.Gener ...
myeclipse启动报JVM terminated. Exit code=1
报错信息如图: 解决办法: 删除当前workspaces下文件夹,路径为:%Workspaces%/.metadata/.plugins/org.eclipse.core.runtime
J2SE知识点摘记(九)
1. 线程操作的一些方法 方法名称 方法说明 public static int activeCount() 返回线程组中目前活动的线 ...
PhoenixFD插件流体模拟——UI布局【Export】详解
最简真分数c语言,HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)...相关推荐
- C语言寻找第k小元素,小技巧——查找第k小的元素
今天分享一个小技巧,虽然是小技巧但是还是很有价值的,曾经是微软的面试题.题目是这样的,一个无序的数组让你找出第k小的元素,我当时看到这道题的时候也像很多人一样都是按普通的思维,先排序在去第K个,但是当 ...
- Hoare选择算法 寻找第k小元素C实现 算法的“AWK脚手架和grap运行过程分析”
现实生活中常有找"最大"."最小"及"中位数"等需求,解决这样的问题不用将整个序列排序.寻找"最大"."最小& ...
- 简答题c语言文件操作顺序,计算机基础与程序设计2012年4月真题试题(02275)
计算机基础与程序设计2012年4月真题试题与答案解析(02275) 计算机基础与程序设计2012年4月真题试题与答案解析(02275),本试卷总共100分. 一.单项选择题 (本大题共20小题.每小题 ...
- 巧用TreeSet求解第k小整数(洛谷P1138题题解,Java语言描述)
题目要求 P1138题目链接 分析 第K小整数应该是比较经典的问题啦,但我们也可以利用现成的数据结构去完成轻松处理. 既然还要去重,那不妨--嘿嘿嘿--TreeSet万岁!! 把元素全打进去就完成了去 ...
- [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.3.5发布-极简强大Go语言开发WEB网页客服...
极简强大Go语言开发在线客服GOFLY0.3.5发布 更新日志: ##### V0.3.5 新增分开系统自动断线与客服关闭连接 修复没有设置欢迎时tip显示错误问题 修复客服端发送消息错误提示不显示问 ...
- [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.3.2发布-极简强大Go语言开发网页客服...
极简强大Go语言开发在线客服GOFLY0.3.2发布 更新日志: V0.3.2 1.修改访客界面样式,更加简洁扁平 2.修改自动欢迎界面样式增加聊天框效果 3.修改数据库时间字段类型,兼容mysql5 ...
- [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.3.3发布-极简强大Go语言开发网页客服...
极简强大Go语言开发在线客服GOFLY0.3.3发布 更新日志: ##### V0.3.3 1.访客/客服端聊天界面样式修改 2.访客端展示客服头像信息 3.访客到来自动打开,以及参数控制 4.访客/ ...
- [GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.2.9发布-极简强大Go语言开发网页客服...
极简强大Go语言开发在线客服GOFLY0.2.9发布 更新日志: 1.访客开多个窗口时 , 单点登录关闭旧ws连接 2.访客切换窗口时可以自动重连 3.访客到来时 , http接口和ws接口同时发送给 ...
- java语言的特点简单性,Java语言的特点
Java是一门面向对象编程语言,底层是C++语言.Java语言分为三大体系: • Java SE(标准版) • Java EE(企业版) • Java ME(微型版) Java语言的特点有以下几种: ...
最新文章
- 美国政府机构成为接受比特币和比特现金支付税金的政府机构
- JAVA数组扁平化整合_数组扁平化的几种处理放法
- Java+大数据开发——Hadoop集群环境搭建(二)
- 大数据就业前景分析的太到位了【附:1T视频资料】
- TOMCAT开放远程调试端口
- 华为P30 Pro现身安兔兔:未开性能模式跑分超28万
- 程序员拒带电脑回家被开除获赔 19.4 万;库克称,很多功能来自中国消费者反馈;谷歌开源1.6万亿参数语言模型 | 极客头条...
- 20210325:力扣递归,回溯类型题目合集
- 高通平台printk输出log到串口
- UEFI学习——事件函数WaitForEvent和CreateEvent/CreateEventEx
- linux ibm多路径软件,如何安装配置IBM存储多路径软件
- 计算机管理中打开移动硬盘磁盘必须格式化,Win10下移动硬盘无法打开提示需要格式化的三种解决方法...
- Software Architecture Patterns: Layered Architecture
- FireFox插件开发--弃用NPAPI
- 内推 | 这可能是2019年最难得的机会之一啦~
- 学日语小技巧 让Office Word效劳
- HTML5与视频传输
- 华为认证HCIP难考吗?
- BW增强-BAdI(初级)
- 存储市场竞争加剧 美光科技再次光荣绽放
热门文章
- Tiled的qbs方式编译记录
- Secure Socket Tunneling Protocol Service服务无法启动(win7)
- 亚马逊平台还收费吗?收费多少?
- 假期的生活,以及wifi和WLAN的区别
- 智能手持终端CPU选型报告
- 计算机组成原理扩展指令CLC实验报告,计算机组成原理实验报告.doc
- wow语音服务器卡蓝条,魔兽世界6.0卡蓝条解决方法 登陆界面卡主解决办法
- Docker推送一个自制镜像到dockerhub
- 浏览器英文快捷翻译工具~~有道词典
- OpenCV图像处理之基于积分图实现NCC快速相似度匹配