快手笔试4.12(菜鸡求助)
这次的题是我做过所有笔试里感觉最友好的了!可是我!依然!不会敲!我不知道哪里有问题就是0通过!要么是我思路有问题,要么是我敲不出来,硬伤啊……
第一题通过了0.7,有没有大佬帮我瞅瞅问题在哪里呀😥
第二题我的思路是把十进制数字R转换成对应的N进制数字,如果N中只出现了数字1或者0,那么符合要求,输出所有数字1所在的位数-1就是答案。进制转换我一开始尝试用库函数,可是N的范围是1~1000,超出了库函数的范围,于是我定义了一个递归函数来计算进制转换,辗转相除留余数,可是我……失败了,不知道问题在哪里,最后用空vector骗了0.16
第三题我的思路是计算每个(ai-bi)的值,然后从小到大排序,这个就是所求的顺序。俺觉得问题的关键在于怎么记录(ai-bi)原始位置,好在排完序之后输出来。我尝试了两种方式,一种是用unordered_map记录,一种是重新定义一个数据结构里面包含差值val和原始位置num,可是我……两种方式都失败了
第四题一如既往没有看题……
欢迎讨论思路,贴个代码给俺学习学习,感谢大佬们!
下面这个是只过了0.7的第一题代码
#include<iostream> using namespace std; int main() { char c[100]; cin >> c; int cp = 0, left = 0, right = 0; for (int i = 0; c[i] != '\0'; i++) { if (c[i] == '(') left++; if (c[i] == ')') right++; } for (int i = 0; c[i] != '\0'; i++) { if (c[i] == '(') { for (int j = 0; c[j] != '\0'; j++) { if (c[j] == ')' && (j - i > 0)) { cp++; left--; right--; break; } } } } cout << cp << ' ' << left << ' ' << right; return 0; }