2014|2015 华为机考简单题解体报告
2016-04-05 00:06
316 查看
这是2014(2015?)年华为机考简单题简单,倒数第二题就是为了好玩(或者虐CPU)…..
/* 2015 huawei test. Author:hujian Time:2016/4/4 nankai */ /* * 1. 60 points problem */ #include <iostream> #include <list> #include <string> using namespace std; //#define _A_1_ #ifdef _A_1_ //a //input m,n,and m means the num of input string. //and the n means the output length. // int main() { int m, n,nxlength=0; string input,output=""; cin >> m >> n; while (m--){ cin >> input; if (input.length() == n){ cout << input << endl; } else if (input.length() < n){ nxlength = n - input.length(); string zero(nxlength, '0'); cout << input + zero << endl; } else{ int index = input.length() / n; int ii = 0; while (index--){ output = input.substr(ii*n, n); cout << output << endl; ii++; } if (input.length() % n != 0){ int till = ii*n; output = input.substr(till); nxlength = n - output.length(); string zero(nxlength, '0'); cout << output + zero << endl; } } } exit(EXIT_SUCCESS); } #endif //end of a 1 //#define _A_2_ #ifdef _A_2_ //ok,just trans string to number // yi er san si wu liu qi ba jiu // 1 2 3 4 5 6 7 8 9 // yi er sa si wu li qi ba ji int main() { string input; while (cin >> input) { int index = 0; for (int i = 0; i < input.length(); i++){ switch (input[i]) { case 'y': putchar('1'); index += 2; break; case 'e': putchar('2'); index += 2; break; case 's': if (input[i+1] == 'a'){ putchar('3'); index += 3; } else{ putchar('4'); index += 2; } break; case 'w': putchar('5'); index += 2; break; case 'l': putchar('6'); index += 2; break; case 'q': putchar('7'); index += 2; break; case 'b': putchar('8'); index += 2; break; case 'j': putchar('9'); index += 2; break; } } } exit(EXIT_SUCCESS); } #endif //end of a 2 //#define _A_3_ #ifdef _A_3_ //just sort so easy if use the STL's list // int main() { list<char> l; string in; cin >> in; for (int i = 0; i < in.length(); i++){ l.push_back(in[i]); } l.unique(); //hehe l.sort(); //hehe list<char>::iterator lit; for (lit = l.begin(); lit != l.end(); lit++){ cout << *lit; } putchar('\n'); exit(EXIT_SUCCESS); } #endif //end of a 3 #define _A_4_ #ifdef _A_4_ /* 输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。 1 2 3 4 5 6 7 8 9 = X 比如: 12-34+5-67+89 = 5 1+23+4-5+6-7-8-9 = 5 请编写程序,统计满足输入整数的所有整数个数。 输入: 正整数,等式右边的数字 输出: 使该等式成立的个数 样例输入:5 样例输出:21 */ #include<algorithm> string solve(int op[]) { // 1 3 5 7 9 11 13 15 string res = "1_2_3_4_5_6_7_8_9"; switch (op[0]){ case 0:res[1] = '+'; break; case 1:res[1] = '-'; break; case 2:res[1] = 'x'; break; } switch (op[1]){ case 0:res[3] = '+'; break; case 1:res[3] = '-'; break; case 2:res[3] = 'x'; break; } switch (op[2]){ case 0:res[5] = '+'; break; case 1:res[5] = '-'; break; case 2:res[5] = 'x'; break; } switch (op[3]){ case 0:res[7] = '+'; break; case 1:res[7] = '-'; break; case 2:res[7] = 'x'; break; } switch (op[4]){ case 0:res[9] = '+'; break; case 1:res[9] = '-'; break; case 2:res[9] = 'x'; break; } switch (op[5]){ case 0:res[11] = '+'; break; case 1:res[11] = '-'; break; case 2:res[11] = 'x'; break; } switch (op[6]){ case 0:res[13] = '+'; break; case 1:res[13] = '-'; break; case 2:res[13] = 'x'; break; } switch (op[7]){ case 0:res[15] = '+'; break; case 1:res[15] = '-'; break; case 2:res[15] = 'x'; break; } string::iterator sit; for (sit = res.begin(); sit != res.end(); sit++){ if (*sit == 'x'){ res.erase(sit); } } return res; } //get the number and the ops and push stack #include <stack> #include<algorithm> #include <Windows.h> stack<string> ps(string str) { stack<string> st; reverse(str.begin(), str.end()); while (!st.empty()) st.pop(); string now = ""; for (int i = 0; i <= str.length(); i++){ if (str[i] != ' '){ if (isdigit(str[i])){ now += str[i]; } else{ reverse(now.begin(), now.end()); if (now!=" ") st.push(now); now = ""; now += str[i]; if (now != " ") st.push(now); now = ""; } } } return st; } int calc(stack<string> s) { s.pop(); if (s.empty()||s.size()<3) return -100000; int res= 0; //pp1 and pp3 is number,pp2 is op string pp1= "",pp2="",pp3=""; //first tp pp1 = s.top(); s.pop(); pp2 = s.top(); s.pop(); pp3 = s.top(); s.pop(); int tmp = 0; if (pp2 == "+"){ tmp = atoi(pp1.c_str()) + atoi(pp3.c_str()); } else{ tmp = atoi(pp1.c_str()) - atoi(pp3.c_str()); } res += tmp; while (!s.empty()){ pp2 = s.top(); s.pop(); pp3 = s.top(); s.pop(); if (pp2 == "+"){ res+= atoi(pp3.c_str()); } else{ res-= atoi(pp3.c_str()); } } return res; } // 0 means + // 1 means - // 2 means null int ops[8]; int main() { int result; int cnt = 0; cin >> result; int i1, i2, i3, i4, i5, i6, i7, i8,i; for (i1 = 0; i1 < 3;i1++) for (i2 = 0; i2< 3; i2++) for (i3 = 0; i3 < 3; i3++) for (i4 = 0; i4 < 3; i4++) for (i5= 0; i5 < 3; i5++) for (i6 = 0; i6 < 3; i6++) for (i7 = 0; i7 < 3; i7++) for (i8 = 0; i8 < 3; i8++){ ops[0] = i1; ops[1] = i2; ops[2] = i3; ops[3] = i4; ops[4] = i5; ops[5] = i6; ops[6] = i7; ops[7] = i8; //todo.... int tmp=0; tmp= calc(ps(solve(ops))); if (tmp == result){ cnt++; cout << solve(ops) << "=" << result << endl; } } cout << "Total:" << cnt << endl; exit(EXIT_SUCCESS); } #endif //end of a 4 //#define _A_5_ #ifdef _A_5_ /* 输入整数(n是小于9位数的整数),当作字符串处理, 看是否有相同的子串,如1212,相同子串是12, 141516则没有子串(子串长度必须大于等于2)。 若有相同子串则输出1,否则输出0 输入:长度小于9的整数 输出1或者0 */ int main() { string in,pre,nex; int minlen=2, maxlen = 0; while (cin >> in){ maxlen = in.length() / 2; bool ok = false; for (int len = minlen; len <=maxlen; len++){//ctl the com length for (int i = 0; i <=in.length() - len; i++){ pre = in.substr(i, len); for (int k = i + 1; k + len <=in.length(); k++){ nex = in.substr(k, len); if (pre == nex){ cout << "1" << endl; ok = true; goto out; } } } } out: if (!ok){ cout << "0" << endl; } } exit(EXIT_SUCCESS); } #endif //end of a 5
相关文章推荐
- linux服务器apache 一个IP,一个端口,建立多个网站的方法。
- JSP页面传值乱码过滤方法
- JSP入门教程之基本语法简析
- hosting&docker host net & docker nat net apache服务器性能测试
- JSP页面间传值问题实例简析
- 剖析ASP.NET MVC的DependencyResolver组件
- 请求如何进入ASP.NET MVC框架
- ASP.NET中如何实现回调
- .Net中的序列化和反序列化详解
- Asp.net SignalR快速入门
- Asp.net使用SignalR实现酷炫端对端聊天功能
- PHP中file_exists使用中遇到的问题小结
- 初识PHP中的Swoole
- PHP如何使用Memcached
- php HTML无刷新提交表单
- JS+CSS实现闪烁字体效果代码
- jQuery技巧之让任何组件都支持类似DOM的事件管理
- 超漂亮的Bootstrap 富文本编辑器summernote
- JavaScript图像延迟加载库Echo.js
- JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)