8/4 网易互娱模拟笔试
2019-08-16 07:58:26来源:博客园 阅读 ()
8/4 网易互娱模拟笔试
说实话秋招还没准备好,没敢投网易,但是做了一下今天的模拟题。通过2.5/3吧! (网易也就是模拟题才会这么简单吧??)第一题:根据新税法给定多组输入,计算每个月收入应该交的税。 思路:就根据不同收入级别从高往低累计就可以啦。
#include <iostream> using namespace std; #define Round(x) int(x+0.5) int main() { int t, n; cin >> t; while (t--) { cin >> n; n -= 5000; double sum = 0; if (n > 80000) { sum += (n - 80000)*0.45; n = 80000; } if (n > 55000) { sum += (n - 55000)*0.35; n = 55000; } if (n > 35000) { sum += (n - 35000)*0.3; n = 35000; } if (n > 25000) { sum += (n - 25000) * 0.25; n = 25000; } if (n > 12000) { sum += (n - 12000)*0.2; n = 12000; } if (n > 3000) { sum += (n - 3000)*0.1; n = 3000; } if (n > 0) { sum += n * 0.03; } cout << Round(sum) << endl; sum = 0; } return 0; }
第二题:重构字符串,把连续的四个以上的串如CDEF转换成C-F的形式 思路:就遍历一遍字符串,定两个锚点,第一个指向当前元素,另一个向后扫描一下,做下判断就好啦。
#include <iostream> #include <string> using namespace std; string format(string &str) { int len = str.length(); if (len <= 1) return str; string res = ""; int i = 0; while (i < len) { int j = i + 1; while (j < len && (str[j] - str[j - 1] == 1)) { j++; } if (j - i >= 4) { res += str[i]; res += '-'; res += str[j-1]; i = j; } else { for (int k = i; k < j; k++) res += str[k]; i = j; } } return res; } int main() { int t; cin >> t; string str; while (t--) { cin >> str; cout << format(str) << endl; } return 0; }
第三题:给定多组输入,每组是一个x, y 和一个字符串,x和y表示两种进制,字符串是某个数的两种进制串的连接,求出每组输入的那个数字(十进制)。 思路:从后往前将字符串截断,分成两部分,分别按照两种进制计算两部分的值,如果相等(找到了),返回该值。 (这个题没有全部通过在意料之中,复杂度O(n2) )
#include <iostream> #include <string> #include <algorithm> using namespace std; int process(int x, int y, string &str) { int len = str.length(); if (len <= 0) return 0; unsigned int sum1 = 0, sum2 = 0; for (int i = len - 1; i >= 0; i--) { //前半部分 for (int j = i; j >= 0; j--) { int number = (str[j] >= 'A' && str[j] <= 'F') ? int(str[j] - 'A' + 10) : int(str[j] - '0'); sum1 += number * pow(x, i - j); } for (int k = len - 1; k > i; k--) { int number = (str[k] >= 'A' && str[k] <= 'F') ? int(str[k] - 'A' + 10) : int(str[k] - '0'); sum2 += number * pow(y, len - 1 - k); } if (sum1 == sum2) return sum1; sum1 = 0; sum2 = 0; } return 0; } int main() { int t, x, y; cin >> t; string str; while (t--) { cin >> x >> y >> str; cout << process(x, y, str) << endl; } return 0; }
原文链接:https://www.cnblogs.com/yocichen/p/11299675.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 生产者消费者算法模拟 c++ 2020-03-29
- 【CSP-S膜你考】即时战略(模拟) 2019-10-17
- NOIP模拟day1-T1(完全背包) 2019-10-12
- Qt无边框窗体-模拟模态窗体抖动效果 2019-09-23
- day 15 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash