webank笔试只过了2.7题,总得三题编程题

有希望过吗?#微众银行#
全部评论
考试过了近五十分钟才进场考试。。 第一题55 剩下的 没时间做了😥
点赞 回复 分享
发布于 2019-04-11 21:10
😅第一题是排队那个题?求问怎么做的
点赞 回复 分享
发布于 2019-04-11 21:03
第一题约瑟夫环一直55什么鬼,二三全过了。
点赞 回复 分享
发布于 2019-04-11 21:06
C++同2.7,能过吗
点赞 回复 分享
发布于 2019-04-11 21:08
一样2.7 感觉人均2.7
点赞 回复 分享
发布于 2019-04-11 21:09
对啊,最后一道,怎么想优化方法,都是没过那30%  。。。
点赞 回复 分享
发布于 2019-04-11 21:14
我看n这么大直接就没写。。
点赞 回复 分享
发布于 2019-04-11 21:16
很强,大佬甩个代码呗,学习下!
点赞 回复 分享
发布于 2019-04-11 21:18
投的什么岗
点赞 回复 分享
发布于 2019-04-11 21:19
第一题 int a, b, c; cin >> a >> b >> c; int res; res = 1 + b - c; cout << res; return (0);
点赞 回复 分享
发布于 2019-04-11 21:29
第二题 #include<iostream> #include <string> using namespace std; //int a, b, c; //cin >> a >> b >> c; //int res; //res = 1 + b - c; //cout << res; //return (0); int array1[1001]; int array2[1001]; int main() {     int n;     cin >> n;     if (n <= 1)     {         cout << 0 << endl;         return 0;     }     for (int i = 0; i < 1001; i++)     {         array1[i] = array2[i] = 0;     }     //int *array1 = new int[n + 1]{0};     /*计算素数*/     //int *array2 = new int[n + 1]{0};     for (int i = 2; i <= n; i++)     {         if (array2[i] == 0)         {             for (int j = 2; j*i <= n;j++)             {                 array2[j*i] = 1;             }         }         if (array2[i] == 1)         {             continue;         }     }     /*方幂*/     for (int i = 2; i <= n; i++)     {         if (array2[i] == 0)         {             array1[i] = 1;             //int j = 1;             int base = i;             int temp = i;             while (1)             {                 temp *= base;                 if (temp > n)                 {                     break;                 }                 else                 {                     array1[temp] = 1;                 }             }         }         else         {             continue;         }     }     int cnt = 0;     for (int i = 2; i <= n; i++)     {         if (array1[i]==1)         {             cnt++;         }     }     //delete[] array1;     //delete[] array2;     return (0); }
点赞 回复 分享
发布于 2019-04-11 21:30
第三题70,暴力搜索 /* 时间限制:C/C++语言 2000MS;其他语言 4000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 回文串是无论正着读还是反着读都一样的字符串,比如“level”或者“noon”就是回文串。 若将某个十进制非负整数N,转换成二进制后得到的 01 序列具有回文串的性质,则称该数为回文数,比如十进制非负整数 9 表示成二进制后得到 1001,“1001”具有回文串的性质,则称十进制整数 9 为回文数。 现给你一个十进制整数N,请计算小于等于N的回文数的数量。 输入 第一行包含一个整数N, 1 ≤N≤1018。 输出 输出一个整数M,表示小于等于 N 的回文数的数量 样例输入 6 样例输出 4 提示 Input Sample 10 Output Sample 6 */ #include<iostream> #include <vector> using namespace std; typedef long long LL; int isHuiWen(LL n) {     vector<LL> temp;     while (n)     {         if (n%2==0)         {             temp.push_back(0);             n /= 2;         }         if (n%2==1)         {             temp.push_back(1);             n /= 2;         }     }     int len = temp.size();     if (len==1)     {         return 1;     }     int i = 0;     int j = len - 1;     while (i<j)     {         if (temp[i]==temp[j])         {             i++;             j--;         }         else         {             return -1;         }     }     return 1; } int main() {     LL n;     cin >> n;     int cnt = 0;     for (LL i = 0; i <= n; i++)     {         if (isHuiWen(i)==1)         {             cnt++;         }     }     cout << cnt << endl;     return (0); }
点赞 回复 分享
发布于 2019-04-11 21:30
😭 我第三题好不容易写出来了常数复杂度的算法,结果时间还是不够,没交上。 #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { unsigned long long n; cin >> n; if (n == 0) { cout << 1 << endl; return 0; } else if (n == 1 || n == 2) { cout << 2 << endl; return 0; } else if (n == 3) { cout << 3 << endl; return 0; } string binaryForm; bool flag = false; for (unsigned long long i = (long long)1 << 63; i != 0; i = i >> 1) { if (i & n) { binaryForm += '1'; flag = true; } else { if (flag) { binaryForm += '0'; } } } int length = binaryForm.size(); long long count = 1; int curr = 1; for (int i = 0; i < length - 1; i++) { if (i % 2 == 0 && i != 0) { curr *= 2; } count += curr; } string subLeft = binaryForm.substr(1, (length - 1) / 2); int times = 1; for (int i = subLeft.size() - 1; i >= 0; i--) { if (subLeft[i] == '1') { count += times; } times *= 2; } string newBinaryForm = "1" + subLeft; if (length % 2) { subLeft.pop_back(); } reverse(subLeft.begin(), subLeft.end()); newBinaryForm += subLeft + "1"; if (newBinaryForm <= binaryForm) { count++; } cout << count << endl; return 0; }
点赞 回复 分享
发布于 2019-04-11 21:46
再贴一遍,真的很难受。。。 #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { unsigned long long n; cin >> n; if (n == 0) { cout << 1 << endl; return 0; } else if (n == 1 || n == 2) { cout << 2 << endl; return 0; } else if (n == 3) { cout << 3 << endl; return 0; } string binaryForm; bool flag = false; for (unsigned long long i = (long long)1 << 63; i != 0; i = i >> 1) { if (i & n) { binaryForm += '1'; flag = true; } else { if (flag) { binaryForm += '0'; } } } int length = binaryForm.size(); long long count = 1; int curr = 1; for (int i = 0; i < length - 1; i++) { if (i % 2 == 0 && i != 0) { curr *= 2; } count += curr; } string subLeft = binaryForm.substr(1, (length - 1) / 2); int times = 1; for (int i = subLeft.size() - 1; i >= 0; i--) { if (subLeft[i] == '1') { count += times; } times *= 2; } string newBinaryForm = "1" + subLeft; if (length % 2) { subLeft.pop_back(); } reverse(subLeft.begin(), subLeft.end()); newBinaryForm += subLeft + "1"; if (newBinaryForm <= binaryForm) { count++; } cout << count << endl; return 0; }
点赞 回复 分享
发布于 2019-04-11 21:48
可以讲下第一题思路吗
点赞 回复 分享
发布于 2019-04-11 21:59
同2.7后台
点赞 回复 分享
发布于 2019-04-11 22:06

相关推荐

头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
点赞 3 评论
分享
牛客网
牛客企业服务