-
十进制转十六进制,输出十六进制中字母的个数
int main()
{
int res=0;
char arr[] = "0123456789ABCDEF";
int num;
cin>>num;
vector<char>ans;
while (num)
{
ans.push_back(arr[num % 16]);
num = num / 16;
}
for(auto t:ans)
{
if(t>='A'&&t<='F')res++;
}
cout<<res;
return 0;
}
-
输入一个数组和 xy,x表示左视野,y表示右视野
若一个数的左右视野内,都比他大,那这个数就是努力的人
求最左边那个努力的人
#include <bits/stdc++.h>
using namespace std;
int helper(vector<int>&vec,int&x,int&y)
{
bool left=false,right=false;
for(int i=0;i<vec.size();i++)
{
int tmp=vec[i];
int lcnt=x,rcnt=y;
int j=i>0?i-1:0;
int k=i<vec.size()-1?i+1:0;
//比较左边
if(i==0){left=true;}
else if((i-0)<lcnt)//左不够,比较到0为止
{
int num =vec[j];
while(tmp<vec[j]&&j>=0)j--;
if(j<0) left=true;
}
else if((i-0)>=lcnt)
{
//左边够
while(j>=0&&lcnt)
{
int num =vec[j];
if(tmp<vec[j])
{
j--;
lcnt--;
}
else break;
}
if(!lcnt&&j>=0) left=true;
}
//比较右边
if(i==vec.size()-1){right=true;}
else if((vec.size()-1-i)<rcnt)//右不够,比较到vec.size()-1为止
{
int num =vec[k];
while(tmp<vec[k]&&k<=vec.size()-1)k++;
if(k==vec.size()) right=true;
}
else if((vec.size()-1-i)>=rcnt)
{
//右边够
while(k<=vec.size()-1&&rcnt)
{
int num=vec[k];
if(tmp<num)
{
k++;
rcnt--;
}
else break;
}
if(!rcnt&&k<=vec.size()-1) right=true;
}
//返回结果
if(left&&right) return i+1;
}
return 0;
}
int main()
{
int n=0,x=0,y=0;
int res;
cin>>n>>x>>y;
vector<int>vec;
while(n--)
{
int tmp=0;
cin>>tmp;
vec.push_back(tmp);
}
res=helper(vec,x,y);
cout<<res;
return 0;
}
#微众银行##C++工程师##笔试题目##实习#