zoukankan      html  css  js  c++  java
  • 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)

    其实挺简单的。先直接算出之前已经排在k这个数前面的数字。比如543是三位的,那么100~543都是可以的,两位的10~54。

    如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能选,10000~54300。

    有一种情况样例4是10000~10000,,这样是不会增加的应该输出'0'。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int dig[89],sz;
    
    void dec(ll k)
    {
        sz = 0;
        while(k){
            dig[sz++] = k%10;
            k /= 10;
        }
        reverse(dig,dig+sz);
    }
    
    
    int main()
    {
        freopen("amusing.in","r",stdin);
        freopen("amusing.out","w",stdout);
        ll K,M; cin>>K>>M;
        ll a = 0;
        dec(K);
        for(int i = sz; i > 0; i--){
            ll data = 0,low = 1;
            for(int j = 0; j < i; j++){
                data =  data*10+dig[j];
                low *= 10;
            }
            a += data - low/10+1;
        }
    
        if(a > M) {
            printf("0
    ");
            return 0;
        }
        if(a == M){
            printf("%I64d
    ",K);
            return 0;
        }
        ll b = M-a;
    
        for(int i = sz+1; ; i++){
            ll data = 0,low = 1;
            for(int j = 0; j < i; j++){
                data = data*10+dig[j];
                low *= 10;
            }
            ll t = data - low/10;
            if(!t) { printf("0
    "); return 0; }
            if(b <= t){
                low /= 10;
                printf("%I64d
    ",b-1+low);
                return 0;
            }
            b -= t;
        }
        return 0;
    }
  • 相关阅读:
    图的连通性问题之tarjan算法
    图的连通性问题之强连通分量初步
    NOIP 2010 引水入城
    最短路经典例题 codevs 1557 热浪
    图的连通性问题之连通和最小环
    最短路径算法
    《数据结构与算法-Javascript描述》
    蓝天白云
    《慢慢来,一切都还来得及》
    聚餐
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4782394.html
Copyright © 2011-2022 走看看