【C++】牛客面试经典题,查找组成一个偶数最接近的两个素数.二进制插入.统计回文.连续最大和.不要二.把字符串转换成整数

news/2024/12/13 0:37:23/

目录

1.查找组成一个偶数最接近的两个素数

2.二进制插入

3.strlen和sizeof

4.strcat和strcpy

5.多维数组的解引用

6. 统计回文

7.  连续最大和

8.转义字符%

9.不要二

10.把字符串转换成整数


1.查找组成一个偶数最接近的两个素数

观察这个题目的要求,我们发现这两个素数一定是分布在n两侧

为了提高效率,可以从中间开始寻找

最后输出的两个素数必须满足:1.是素数 2.这个素数对的差,比其他满足1的素数对要小

 

 

#include <iostream>
using namespace std;
bool is_prime(int x)
{
for(int i=2;i<x;i++)
{if(x%i==0) return false;
}
return true;
}
int main() {int a, b;int n;cin>>n;int gap=n;int i=n/2;while(i){if(is_prime(i) && is_prime(n-i)){if(n-i-i<gap){a=i;b=n-i;gap=n-i-i;}}i--;}cout<<a<<endl;cout<<b<<endl;return 0;
}

2.二进制插入

首先观察他给的例子

                        6        2

1024:0100  0000  0000

19:          0001   0011

位运算之后变成

            0100 0100    1100

其实你有没有发现,他就是把m(19)左移j,之后和n加在一起

因为n在要插入的一段都是0,所以直接加上也不会有进位

 3.strlen和sizeof

 strlen:计算字符串长度,遇到'\0'就停止,并不会记录'\0'

sizeof:计算数组所占内存空间的大小,因为本题是数组里面是char类型数据,所以sizeof的结果=字符串长度*1  看起来好像计算长度,实际不是

4.strcat和strcpy

注意这两个函数返回值:strcat返回追加之后字符串的首元素地址

strcat(p1+x,p2+y):把p1+x位置一直到p1结束的字符串拿出来 加上 p2+y位置一直到p2结束的字符串,最后返回p1+x位置的地址

strcpy(p1+x,p2+y):把p2+y拷贝到p1+x位置,返回p1的地址

 5.多维数组的解引用

类比一下我们熟悉的二维数组解引用的方式 

 6. 统计回文

解题思路就是把第二个字符串依次插入一下第一个字符串的空隙,看看构不构成回文,然后统计次数

#include <iostream>
#include <string>
using namespace std;
bool is(string s)
{for(int i=0;i<=s.size();i++){if(s[i]!=s[s.size()-i-1]) return false;}
return true;
}
int main() {string s1,s2;cin>>s1;cin>>s2;int ans=0;for(int i=0;i<=s1.size();i++){string tmp=s1;tmp.insert(i,s2);if(is(tmp)) ans++;}
cout<<ans<<endl;
return 0;
}

7.  连续最大和

 

 

#include <iostream>
using namespace std;int main() {int sum; //记录当前位置的总和int ans; //最大的连续和int n; //个数cin >> n >> sum; //直接把第一个输入的数字作为起始的和ans = sum;while (--n) //因为已经输入一个数字,只需要输入n-1次{int t; //临时变量接下来的数字cin >> t;sum = max(sum + t, t); //sum判断一下加不加这个变量ans = max(ans, sum); //ans是之前的ans和sum的最大}cout << ans << endl;return 0;
}

8.转义字符%

在printf进行流输入的时候,需要规定输入的格式,一般用%

%后面如果加上比较特殊的字母,比如:%s(以字符串的形式输出),%d(以整数的形式输出),%f(以浮点数的方式)...

但是后面如果是一般的字符,编译器默认忽略第一个%

比如%q,编译器会默认忽略%,只输出q

 

9.不要二

 

#include <iostream>
#include <vector>
using namespace std;int main() {int row,col;cin>>row>>col;vector<vector<int>> vv(row,vector<int>(col,0)); //初始化int ans=0;for(int i=0;i<vv.size();i++){for(int j=0;j<col;j++){if(!vv[i][j]){ans++;if(i+2<row)vv[i+2][j]=1;if(j+2<col)vv[i][j+2]=1;}}}cout<<ans<<endl;
}

 10.把字符串转换成整数

 

 

class Solution {
public:int StrToInt(string str) {int flag=1;int i=0;if(str[i]=='-' || str[0]=='+'){if(str[0]=='-')flag=-1;i++;}int ans=0;
for(;i<str.size();i++)
{if(str[i]<'0'||str[i]>'9')return 0;ans=ans*10+str[i]-'0';
}return flag*ans; }
};


http://www.ppmy.cn/news/37032.html

相关文章

华为OD机试【密室逃生游戏】

密室逃生游戏 题目 小强增在参加《密室逃生》游戏&#xff0c;当前关卡要求找到符合给定 密码 K&#xff08;升序的不重复小写字母组 成&#xff09; 的箱子&#xff0c; 并给出箱子编号&#xff0c;箱子编号为 1~N 。 每个箱子中都有一个 字符串 s &#xff0c;字符串由大写字…

用Graphviz在线绘制有限状态机等结构化的图

1.打开Graphviz的官网 官网链接&#xff1a;Graphviz 官网里有很多示例&#xff0c;有各种各样的图&#xff0c;可以根据个人需要选择。 2.点击某个示例&#xff0c;进入详情 这个页面能够看到绘制该图的dot代码。 3.进入编辑页面 点击该页面的Edit in Playground按钮&am…

2022蓝桥杯省赛——修剪灌木

问题描述 爱丽丝要完成一项修剪灌木的工作。 有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌木, 让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。当修剪了最右侧的灌木后, 她会调转方向, 下一天开始向左修剪…

Python(白银时代)——文件操作

文件的基本操作 概念 在计算机中&#xff0c;文件是以 二进制 的方式保存在磁盘上的 文本文件 和 二进制文件 文本文件&#xff08;用记事本打开能直接能看懂的&#xff09; 可以使用 文本编辑软件查看 本质上还是二进制的,比如 Python的源码文件 二进制文件&#xff08;用…

四福来轮全向底盘实现画图功能

1. 功能说明 本文示例将实现四轮全向底盘绘制正六边形的功能。 2. 结构说明 全向底盘具备结构简单、运动灵活等特点。四轮全向底盘采用全向福来轮作为执行轮&#xff0c;四个轮成正方形分布&#xff0c;且每个轮在斜45方向安装。全向福来轮由主轮和副轮组成&#xff0c;主轮和副…

Authing 全球视野助力快用云科扬帆起航 | 客户案例

“我们在产品开发上更专注于核心业务&#xff0c;其他专业的事希望交给专业的公司做&#xff0c;在全球化场景下实现快速上线。Authing 的身份产品能力、服务水平、出海场景的支持力度&#xff0c;使其成为我们最好的选择。” ——快用云科联合创始人阎志涛 01 引言&#xff1…

Markdown pandoc-crossref自定义图表前缀(解决figureTitle和tableTitle被XeLaTex忽略的问题 )

pandoc-crossref可以很方便地进行交叉引用&#xff0c;在Github下载对应pandoc的版本&#xff1a; pandoc-crossref-release 找好下载exe就可以了。可能踩的一些坑可以看这个博客&#xff0c;我用它解决了找不到pandoc-crossref可执行文件的问题&#xff08;你需要把pandoc-c…

Coremail奇安信发布2022中国企业邮箱安全性研究:应对ChatGPT带来的安全挑战

日前&#xff0c;广东盈世科技计算机有限公司与奇安信集团联合编写发布《2022中国企业邮箱安全性研究报告》。 报告数据显示&#xff1a;2022年&#xff0c;全国企业邮箱用户共收到各类钓鱼邮件约425.9亿封&#xff0c;相比2021年收到各类钓鱼邮件的342.2亿封增加了24.5%。 一…