链接:

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", n);
for (int i = 0;i < n;i++)
printf("%c", ans[i%k]);
printf("\n");
return 0;
}
for (int i = k-1;i >= 0;i--)
{
if (ans[i] != '9')
{
ans[i]++;
break;
}
else
ans[i] = '0';
}
printf("%d\n", n);
for (int i = 0;i < n;i++)
printf("%c", ans[i%k]);
printf("\n"); return 0;
}

最新文章

  1. Java 数组打印数组的 五种方法
  2. 不经过 App store 的安装方式(转)
  3. uploadify 火狐不兼容问题解决方案
  4. ArrayList笔记
  5. JSON操作技巧
  6. [弹出消息] C#ShowMessageBox帮助类
  7. 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
  8. JavaScript DOM编程艺术-学习笔记(第十章、第十一章)
  9. TIMESTAMP和DATETIME哪个好
  10. canvas与svg区别
  11. linux下部署php项目-Apache、php、mysql关联
  12. IntelliJ Idea 2017 免费激活方法
  13. linux之各目录作用
  14. InnoDB中锁的查看
  15. 说说对npm的开发模式和生产模式的理解
  16. Android 监听 WiFi 开关状态
  17. 【Ubuntu】/etc/profile
  18. mac下将根目录/更改组到普通用户,导致sudo不能用
  19. 【Leetcode】【Medium】Longest Substring Without Repeating Characters
  20. 拓扑排序(Topological Order)UVa10305 Ordering Tasks

热门文章

  1. 推荐linux运维必备的几本书
  2. 将linux的root用户的家目录由/root切换为/home/root
  3. [转帖]重估BAT与华为的云上野心
  4. [转帖]大数据hadoop与spark的区别
  5. SpringBoot之分页插件PageHelper的使用
  6. Python10之列表1(创建列表和列表添加元素的方法)
  7. C++ 中三种继承方式的理解
  8. python(自用手册)
  9. PAT(B) 1094 谷歌的招聘(Java)
  10. Fabric交易流程