zoukankan      html  css  js  c++  java
  • Contest2037

    http://acm.csu.edu.cn/OnlineJudge/problem.php?cid=2037&pid=9

    【题解】:

      这题卡了一下,卡在负数的情况,负数输出 0

      这题主要找到一个个相邻重复的位置,然后加1上去,看是否进位,直到满足条件为止

    【code】:

      1 #include<iostream>
      2 #include<stdio.h>
      3 #include<string.h>
      4 #include<stdlib.h>
      5 using namespace std;
      6 
      7 
      8 void inttostr(int n,char *str)
      9 {
     10     int cnt=0;
     11     while(n)
     12     {
     13         str[cnt]=n%10+'0';
     14         n/=10;
     15         cnt++;
     16     }
     17     str[cnt]='';
     18    // cout<<str<<endl;
     19     int i;
     20     for(i=0;i<cnt/2;i++)
     21     {
     22         swap(str[i],str[cnt-i-1]);
     23     }
     24 }
     25 
     26 int CheckRight(char *str)
     27 {
     28     int len = strlen(str);
     29     int i;
     30     for(i=1;i<len;i++)
     31     {
     32         if(str[i]==str[i-1]&&str[i]!='0')
     33         {
     34             return i;
     35         }
     36     }
     37     return -1;
     38 }
     39 
     40 int main()
     41 {
     42     int n;
     43     scanf("%d",&n);
     44     while(n--)
     45     {
     46         int m;
     47         scanf("%d",&m);
     48          if(m<0)
     49         {
     50             printf("%d
    ",0);
     51             continue;
     52         }
     53         if(m<10)
     54         {
     55             printf("%d
    ",m+1);
     56             continue;
     57         }
     58         char str[20];
     59         inttostr(m,str);
     60         if(CheckRight(str)==-1)
     61         {
     62             m++;
     63             inttostr(m,str);
     64         }
     65         while(1)
     66         {
     67             int id = CheckRight(str);
     68             if(id==-1)
     69             {
     70                break;
     71             }
     72             else
     73             {
     74                 int len = strlen(str);
     75                 int i,j;
     76                 str[id]++;
     77                 for(i=id+1;i<len;i++)
     78                 {
     79                     str[i]='0';
     80                 }
     81                 for(i=id;i>=0;i--)
     82                 {
     83                     if(str[i]>'9')
     84                     {
     85                         str[i]='0';
     86                         if(i>0)
     87                             str[i-1]++;
     88                         else
     89                         {
     90                             for(j=len+1;j>0;j--)
     91                             {
     92                                 str[j]=str[j-1];
     93 
     94                             }
     95                             str[j] = '1';
     96                         }
     97                     }
     98                 }
     99             }
    100         }
    101         printf("%s
    ",str);
    102     }
    103     return 0;
    104 }
  • 相关阅读:
    DAY56
    DAY55
    DAY54
    DAY53
    DAY52
    DAY51
    DAY50
    spark1.1.0部署standalone分布式集群
    Storm流分组介绍
    Storm拓扑的并行度(parallelism)介绍
  • 原文地址:https://www.cnblogs.com/crazyapple/p/3349488.html
Copyright © 2011-2022 走看看