[Offer收割]编程练习赛38 题目1 : 漏写的数字

来源:互联网 发布:javascript map对象 编辑:程序博客网 时间:2024/05/22 02:02

题目1 : 漏写的数字

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小A今年刚上幼儿园,正在学习写100以内的数字。幼儿园的老师留了一项作业,要求小A从某个100以内的数X开始一直写到另一个100以内的数Y(Y - X > 1)。  

不过粗心的小A在作业中漏写了一个整数(好在小A漏写的不是X,并且至少写下了2个整数)。给定小A写下的数字串,你能求小A漏写的数字是多少吗?

输入

一个只包含数字的字符串。注意小A至少写下了两个数。

输出

小A漏写的数字。

样例输入
9111213
样例输出
10

整场比赛就做出了一道题...掩面而泣...

这个没用什么算法,那我为什么要写博客呢?

因为我交了好几次90/100,好不容易AC了当然要记录一下啦~~~

一定要好好考虑891011的情况,坑死我了...再次掩面而泣...


(代码很乱...不要介意...)

#include <stdio.h>#include <string.h>int main(){char a[1001];int i,j,b,flag=0,res;scanf("%s",a);b=strlen(a);if(b==2){if(a[0]-'0'+1==a[1]-'0')res=a[1]-'0'+1;elseres=a[0]-'0'+1;}else if(b==3){if(a[0]-'0'+1==a[1]-'0'&&a[1]-'0'+1==a[2]-'0')res=a[2]-'0'+1;else if(a[0]=='9'&&a[1]=='1'&&a[2]=='0')res=11;else if(a[0]=='9'&&a[1]=='1'&&a[2]=='1')res=10;else{if(a[0]-'0'+2==a[1]-'0')res=a[0]-'0'+1;else if(a[1]-'0'+2==a[2]-'0')res=a[1]-'0'+1;else if(a[0]=='8'&&a[1]=='1')res=9;}}else{j=-1;//123456if(((a[0]-'0'+1==a[1]-'0'||a[0]-'0'+2==a[1]-'0')&&(a[1]-'0'+1==a[2]-'0'||a[1]-'0'+2==a[2]-'0'))||(a[0]=='8'&&a[1]=='9')||a[0]=='9'||a[0]=='8'){for(i=0;i<b;i++){if(flag)break;if(a[i]+1==a[i+1]&&a[i]!='9'){j=i+2;continue;}else if(a[i]=='8'){if(a[i+1]=='9'&&i+1==b-1){flag=1;res=10;}if(a[i+1]=='1'&&a[i+2]=='0'){flag=1;res=9;}}else if(a[i]=='9'){if(i==b-3){if(a[b-1]=='1'){flag=1;res=10;}if(a[b-1]=='0'){flag=1;res=11;}}else if(i<b-2){if(a[i+1]=='1'&&a[i+2]=='0')break;else if(a[i+1]=='1'&&a[i+2]=='1'){flag=1;res=10;}}else if(i==b-1&&flag==0){flag=1;res=10;}break;}else if(a[i]-'0'+2==a[i+1]-'0'){flag=1;res=a[i]-'0'+1;}}}//101112if(flag==0){int x[105],o=0;if(j==-1)j=0;if(j==b){res=a[b-1]-'0'+1;flag=1;}for(i=j;i<b;i+=2){x[o++]=(a[i]-'0')*10+(a[i+1]-'0');}for(i=0;i<o;i++){//printf("%d**\n",x[i]);if(x[i]+1==x[i+1])continue;else if(x[i]+2==x[i+1]){flag=1;res=x[i]+1;break;}}if(flag==0)res=x[o-1]+1;}}printf("%d\n",res);}


阅读全文
0 0
原创粉丝点击