首页 > 其他 > 详细

C. Long Beautiful Integer

时间:2019-12-27 21:10:15      阅读:137      评论:0      收藏:0      [点我收藏+]

题目思路还是很直接,首先按要求生成字符串。如果该目标字符串小于原字符串,那么从第k位开始,找到最后一个非9的位置,++,同时如果有9,要考虑进位(一开始没有考虑WA了一次)。

犯了一个错误,就是比较字符串大小时,一开始写的是如果b中有一个小于a,就return false.WA了半天。可以直接用strcmp()。

技术分享图片
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=2e5+5;
 4 int n,k;
 5 char a[N],b[N];
 6 bool check()
 7 {
 8     for(int i=1;i<=n;i++)
 9     {
10         if(a[i]<b[i])
11             return true;
12         if(a[i]>b[i])
13             return false;
14     }
15     return true;
16 }
17 int main()
18 {
19     while(scanf("%d%d",&n,&k)!=EOF)
20     {
21         scanf("%s",a+1);
22         for(int i=1;i<=n;i++)                                    
23         {
24             if(i<=k)
25                 b[i]=a[i];
26             else
27                 b[i]=b[i-k];
28         }
29         int p;
30         if(!check())//strcmp(b+1,a+1)<0
31         {
32             p=k;
33             while(b[p]==9&&p>1)//忘记考虑9不能再加1的情况
34             {
35                 b[p]=0;
36                 p--;
37             }
38             b[p]++;
39             for(int i=k+1;i<=n;i++)
40                 b[i]=b[i-k];
41         }
42         printf("%d\n",n);
43         for(int i=1;i<=n;i++)
44             printf("%c",b[i]);
45         printf("\n");
46     }
47     return 0;
48 }
View Code

C. Long Beautiful Integer

原文:https://www.cnblogs.com/1024-xzx/p/12109483.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!