[2017HNCPC] Strange Optimization 简单数论

给出正整数 n , m ≤ 1 e 9 n,m\leq1e9 n,m1e9,并且定义函数 f ( t ) = min ⁡ i , j ∈ Z ∣ i n − j m + t ∣ f(t)=\min_{i,j\in Z}|\frac{i}{n}-\frac{j}{m}+t| f(t)=mini,jZnimj+t,求一实数 α \alpha α使得 f ( 1 2 + α ) f(\frac{1}{2}+\alpha) f(21+α)最大,求出值。
由于 α \alpha α是任意实数,所以等价于求 f ( α ) f(\alpha) f(α) ∣ i n − j m ∣ = ∣ m i − n j n m ∣ = ∣ k g c d ( n , m ) n m ∣ |\frac{i}{n}-\frac{j}{m}|=|\frac{mi-nj}{nm}|=|\frac{kgcd(n,m)}{nm}| nimj=nmminj=nmkgcd(n,m) α \alpha α g c d ( n , m ) 2 n m \frac{gcd(n,m)}{2nm} 2nmgcd(n,m)的时候有最大值答案即为 g c d ( n , m ) 2 n m \frac{gcd(n,m)}{2nm} 2nmgcd(n,m)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
static const int maxn = 100010;
static const int INF = 0x3f3f3f3f;
static const int mod = (int)1e9 + 7;
static const double eps = 1e-6;
static const double pi = acos(-1);
 
void redirect(){
    #ifdef LOCAL
        freopen("test.txt","r",stdin);
    #endif
}
 
int main(){
    redirect();
    int n,m;
    while(~scanf("%d %d",&n,&m)){
        ll a = __gcd(n,m);
        ll b = 2ll*m*n;
        ll tmp = __gcd(a,b);
        printf("%lld/%lld\n",a/tmp,b/tmp);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值