hihoCoder1649:漏写的数字(模拟)
来源:互联网 发布:京东商城seo解决方案 编辑:程序博客网 时间:2024/05/29 16:34
题解:
前两个数字可能是两位,可能是三位,也可能是四位。
如果是两位即是两个一位数组成,三位便是910 或9 11
四位便是两个两位数。
因为一位数的判断和十位数判断不同,个位数判断的话是判断一个字符,十位数判断要判断两个字符,所以要将两种情况分开来。
所以我们只需判断前四个字符是三种类型中的哪一个就可以判断从十位数开始++,还是从个位数开始++。
其实我们只要判断是否是两个两位数即可,如果不是即为个位数开始。 可以设a = s[0], b = s[1] , c = s[2], d = s[3]。如果不足位数,可以将变量致-1当做不存在。
int cc = c*10+d;int aa = a*10+b;
如果 cc - aa == 1 || cc - aa == 2 那么就可以断定是两个两位数。
例如 2324或 2325。
注意在一位数++的时候遇到10要转变成两位数的形式。
具体代码:
#include <iostream>#include <string>#include <cstring>using namespace std;string s;void ten(int k, int a){ for(int i = k; i < s.length(); i += 2){ int tmp = 10*(s[i]-'0')+s[i+1]-'0'; if(a != tmp){ cout << a << endl; return; } a++; }}void single(int k, int a){ for(int i = k; i < s.length(); ++i){ int tmp = s[i]-'0'; if(a != tmp){ cout << a << endl; return; } a++; if(a == 10){ ten(i+1,10); break; } }}int main(){ cin >> s; int a = s[0] -'0'; int b = s[1]- '0'; int c = -1; int d = -1; if(s.length() > 3){ c = s[2]-'0'; } if(s.length() > 4){ d = s[3] -'0'; } int cc = c*10+d; int aa = a*10+b; if(cc - aa == 1 || cc - aa == 2 ) ten(0, aa); else single(0, a); return 0;}
阅读全文
0 0
- hihoCoder1649:漏写的数字(模拟)
- 漏写的数字 hihoCoder[Offer收割]编程练习赛38/hihoCoder1649
- 用汇编写的在PC机上显示的模拟数字时钟
- hiho- 漏写的数字(水)
- 题目1 : 漏写的数字
- H5写的数字
- 模拟信号的数字传输
- HttpURLConnection写的模拟登陆
- JavaScript写的数字加法
- 模拟的和数字的认识
- 关于模拟数字混合电路的地
- 数字地和模拟地的区别
- LCD显示器的模拟和数字接口
- 模拟平和数字屏的区别
- 模拟屏和数字屏的区别
- 模拟地和数字地的认识
- 数字屏与模拟屏的区别
- 数字地与模拟地的区别
- Mybatis 动态SQL之<trim>,<where>,<set>源码解析
- 线程
- [资料整理]Caffe:GPU Optimization简介
- 考研、转行和工作如何选择?
- Ubuntu 16.04 LTS安装sogou输入法详解
- hihoCoder1649:漏写的数字(模拟)
- 统计数
- 这个博客好难写啊,不知道从哪里下手
- 基于GANs的图像编辑方法
- AI浪潮席卷而来,现在加入还来得及吗?
- vue-router 2.0 常用基础知识点之router.push()
- 《程序员的职业素养》【PDF】下载
- AOE关键路径
- (转)PyCharm中Directory与Python package的区别