欢迎光临
我们一直在努力

牛客华为机试,华为机试练习

题目ID:36884 – 查找组成一个偶数最接近的两个素数 题目描述

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
输入描述:

输入一个偶数

输出描述:

输出两个素数

示例1

输入:20
输出:7 13

解题思路

该题思路是:我们先实现一个判断一个树是否为素数的子函数,如何判断一个数是否为素数,那就很简单了,for循环让n除以从2开始到sqrt(n)的所有数,若是均不能整除,则n是素数,反之不是。实现好子函数后,我们再来找某数2等于最近两个素数相加的两个数,最近,我们就应该从中间开始往两边找,然后通过刚刚写的子函数来判断两个数是不是素数,不是就一个++,另一个–,直到找到为止。

代码实现 #include <iostream>#include <algorithm>using namespace std;bool IsPrime(int n){for (int i = 2; i <= sqrt(n); ++i){if (n % i == 0)return false;}return true;}int main(){int num;int half;int i;while (cin >> num){half = num / 2;//从中间向两边找for (i = half; i > 0; i–){if (IsPrime(i) && IsPrime(num – i))break;}cout << i << endl << num – i << endl;}return 0;} 题目ID:36898-参数解析 题目描述

在命令行输入如下命令:
xcopy /s c:\ d:\,
各个参数如下:
参数1:命令字xcopy
参数2:字符串/s
参数3:字符串c:
参数4: 字符串d:
请编写一个参数解析程序,实现将命令行各个参数解析出来。

解析规则:
1.参数分隔符为空格
2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将“”去掉,引号不存在嵌套情况。
3.参数不定长
4.输入由用例保证,不会出现不符合要求的输入

输入描述:

输入一行字符串,可以有空格

输出描述:

输出参数个数,分解后的参数,每个参数都独占一行

解题思路 这里解题思路比较巧妙了,因为我们需要统计参数的个数,并且这些参数是用空格区分的,所有我们这里处理的时候用cin接收输入之后将这个参数依次存放如vector中,通过调用vector的size()计算参数的个数,输出即可接下来就是进行参数的解析了,这里的处理方法也是很简单的,我们通过for循环遍历vector数组,分别拿到每个参数,这里也只需要处理最后一个参数的特殊情况,就是最后一串得一起输出,而不是单个,其余的参数拿到直接输出即可 代码实现 #include <iostream>#include <string>#include <cstring>#include <vector>using namespace std;int main(){ string str; vector<string> v; while(cin >> str) { v.push_back(str); } cout << v.size() << endl; string cmd; string cur; for(size_t i = 0;i < v.size();++i) { cmd = v[i]; if(cmd[0] == ”\”) { int size = cmd.size(); cur = cmd.substr(1,size-2); cout << cur <<endl; } else cout << cmd << endl; } return 0;} 题目ID:36897-计算日期到天数转换 题目描述

根据输入的日期,计算是这一年的第几天。。
详细描述:
输入某年某月某日,判断这一天是这一年的第几天?。
接口设计及说明:

/***************************************************************************** Description : 数据转换 Input Param : year 输入年份 Month 输入月份 Day 输入天 Output Param : Return Value : 成功返回0,失败返回-1(如:数据错误) *****************************************************************************/ public static int iConverDateToDay(int year, int month, int day) { /* 在这里实现功能,将结果填入输入数组中*/ return 0; } /***************************************************************************** Description : Input Param : Output Param : Return Value : 成功:返回outDay输出计算后的第几天; 失败:返回-1 *****************************************************************************/ public static int getOutDay() { return 0; }

输入描述:

输入三行,分别是年,月,日

输出描述:

成功:返回outDay输出计算后的第几天;
失败:返回-1

解题思路 这题思路很简单,用一个数组存放每月的累积天数 输入的日期天数= 当月的天数 + 当月之前的累积天数 如果包含二月,再去判断是否为 闰年,如果是闰年,再加1天即可#### 代码实现 代码实现 便宜香港vps #include <iostream>using namespace std;int main(){ int array[12] = {31,59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; int year; int month; int day; int sum = 0; while(cin >> year >> month >> day) { sum = 0; sum += array[month – 2]; sum += day; if(month > 2) { if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) sum += 1; } cout << sum <<endl; } return 0;} 84978934

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。