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;
    }
    
  • 相关阅读:
    php 编码规范(1)
    ubuntu 引导删除
    http协议详解
    centos 下mysql操作
    php 异常捕获
    php 设置报错等级
    在WINDOWS SERVER 上或远程桌面中使用 MUTEX
    发送WIN+SAPCE键,WINDOWS,空格键
    访问本机的WEB API 报400错误
    php.ini xdebug
  • 原文地址:https://www.cnblogs.com/YDDDD/p/12082608.html
Copyright © 2011-2022 走看看