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;
    }
    
  • 相关阅读:
    Noe4j启动警告
    SpringBoot
    MySQL数据库 java SQL语句区分大小写分析
    day24 模块的语法
    day23 re模块
    day22 常用模块02 序列化
    day21 常用模块01
    day20 面向对象06 MRO和C3算法
    day19 面向对象05 约束
    day18 面向对象04 反射
  • 原文地址:https://www.cnblogs.com/YDDDD/p/12082608.html
Copyright © 2011-2022 走看看