hdu6624 fraction(数论,迭代)

本文介绍了HDU6624 Fraction问题,这是一个涉及数论和迭代的算法题。题目要求找到最小正整数b,使得存在正整数a满足a=bx(mod p),并给出了一系列大小关系的条件。通过将余数条件转化为bx=py+a,可以得出0<a=bx-py<b。利用迭代方法,可以求出最小的b。作者指出,在无法直接得出答案的情况下,迭代是一种常见的逼近最值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hdu6624 fraction(多校第5场1001)
【题目描述】

传送门
找到最小正整数的b使得存在正整数a<b,满足a=bx(mod p)

【思路】

本题除了a=bx(mod p)这个条件,还有许多大小关系的条件,是本题的特殊点和突破口,分析一下即 : 0<a<b且a、b都为整数,为了利用到这些不等关系,我们把余数条件写成 bx=py+a 的形式,带入不等式消元得0<a=bx-py<b
即p/x<b/y<p/(x-1) 求出最小的b
可以不断迭代求,以下是证明:

plus.一般求最值如果不能直接推出答案(据说大佬都是直接推出答案 ),基本都要迭代或者用三分、二分之类的逼近,毕竟是计算机嘛,可以少动一点脑子了

【代码】
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll p,x,b,y;
int T;
void dfs(ll a,ll b,ll c,ll d,ll &x,ll &y){
	ll t=(a+b-1)/b;
	i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值