zoukankan      html  css  js  c++  java
  • Codeforces 251C Number Transformation

    Number Transformation

    我们能发现这个东西是以2 - k的lcm作为一个循环节, 然后bfs就好啦。

    #include<bits/stdc++.h>
    #define LL long long
    #define fi first
    #define se second
    #define mk make_pair
    #define PLL pair<LL, LL>
    #define PLI pair<LL, int>
    #define PII pair<int, int>
    #define SZ(x) ((int)x.size())
    #define ull unsigned long long
    
    using namespace std;
    
    const int N = 5e5 + 7;
    const int inf = 0x3f3f3f3f;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    const int mod = 1e9 + 7;
    const double eps = 1e-8;
    const double PI = acos(-1);
    
    LL a, b;
    int k, lcm = 1;
    int dp[N];
    
    void getDp(int x) {
        memset(dp, -1, sizeof(dp));
        dp[x] = 0;
        queue<int> que;
        que.push(x);
        while(!que.empty()) {
            int u = que.front(); que.pop();
            if(dp[u - 1] == -1) {
                dp[u - 1] = dp[u] + 1;
                que.push(u - 1);
            }
            for(int i = 2; i <= k; i++) {
                int v = u - (u % i);
                if(~dp[v]) continue;
                dp[v] = dp[u] + 1;
                que.push(v);
            }
        }
    }
    
    int main() {
        scanf("%lld%lld%d", &a, &b, &k);
        swap(a, b);
        for(int i = 2; i <= k; i++)
            lcm = lcm / __gcd(lcm, i) * i;
        LL ans = 0;
        LL R = b - (b % lcm);
        LL L = a + (lcm - a % lcm) % lcm;
        if(L <= R) {
            LL cnt = (R - L) / lcm;
            getDp(lcm - 1);
            ans = dp[0] * cnt + cnt;
            if(a % lcm) ans += dp[a % lcm] + 1;
            getDp(b % lcm);
            ans += dp[0];
        } else {
            getDp(b % lcm);
            ans = dp[a % lcm];
        }
        printf("%lld
    ", ans);
        return 0;
    }
    
    /*
    */
  • 相关阅读:
    CentOS7下安装Scrapy
    阿里云ECS提示RHSA-2017:3263: curl security update
    CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)
    Electron: 从零开始写一个记事本app
    flask请求流程
    编写Dockerfile
    docker-compose使用
    redis持久化切换rdb到aof
    RESTful API规范
    介绍importlib
  • 原文地址:https://www.cnblogs.com/CJLHY/p/10466476.html
Copyright © 2011-2022 走看看