zoukankan      html  css  js  c++  java
  • Codeforces Round #609 (Div. 2) C. Long Beautiful Integer

    链接:

    https://codeforces.com/contest/1269/problem/C

    题意:

    You are given an integer x of n digits a1,a2,…,an, which make up its decimal notation in order from left to right.

    Also, you are given a positive integer k<n.

    Let's call integer b1,b2,…,bm beautiful if bi=bi+k for each i, such that 1≤i≤m−k.

    You need to find the smallest beautiful integer y, such that y≥x.

    思路:

    记录前k个,模拟比大小,要修改值的时候从后往前选第一个不是9的字符修改,同时把9修改为0

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN = 2e5+10;
    
    int n, k;
    char num[MAXN], ans[MAXN];
    
    bool Check()
    {
        for (int i = k;i < n;i++)
        {
            if (num[i] < ans[i%k])
                return true;
            if (num[i] > ans[i%k])
                return false;
        }
        return true;
    }
    
    int main()
    {
        scanf("%d%d", &n, &k);
        scanf("%s", num);
        for (int i = 0;i < k;i++)
            ans[i] = num[i];
        ans[k] = 0;
        if (Check())
        {
            printf("%d
    ", n);
            for (int i = 0;i < n;i++)
                printf("%c", ans[i%k]);
            printf("
    ");
            return 0;
        }
        for (int i = k-1;i >= 0;i--)
        {
            if (ans[i] != '9')
            {
                ans[i]++;
                break;
            }
            else
                ans[i] = '0';
        }
        printf("%d
    ", n);
        for (int i = 0;i < n;i++)
            printf("%c", ans[i%k]);
        printf("
    ");
    
        return 0;
    }
    
  • 相关阅读:
    [ECNU 1624] 求交集多边形面积
    [转] Java之ACM速成
    [swustoj 191] 迷宫逃离
    [Swustoj 24] Max Area
    PICK定理模板
    [HDU 1007] Quoit Design
    [转] 最近点对距离问题
    [POJ 2184] Cow Exhibition
    SGU 144.Meeting
    SGU 143.Long Live the Queen(女王万岁)
  • 原文地址:https://www.cnblogs.com/YDDDD/p/12082608.html
Copyright © 2011-2022 走看看