招行的两题

第一题数据特别水,混过去了....
#include<iostream>
using namespace std;
void swap(int &a,int &b){
int temp=a;
a=b;
b=temp;
}
int gcd(int a,int b){
if(a<b) swap(a,b);
if(b==0) return a;
return gcd(b,a%b);
}
int zuixiaogongbeishu(int a,int b){
int _gcd=gcd(a,b);
return a*b/_gcd;
}
int main(){
int a,b,n;
cin>>a>>b>>n;
int cnt=0;
int aa=zuixiaogongbeishu(a,b);
for(int i=aa;i<=n;i+=aa){
cnt++;
}
cout<<cnt<<endl;
}
第二题估计有BUG,欢迎hack 利用了两个人都特别聪明这句话,但是并不一定完全正确,AC没问题
#include<iostream>
#include<vector>
using namespace std;
vector<int>v;
int m;
int main(){
cin>>m;
if(m<=2){
cout<<"true"<<endl;
return 0;
}

int a;
for(int i=0;i<m;i++){
cin>>a;
v.push_back(a);
}
int sum1=0;
int sum2=0;
int i=0;
int flagg=0;
v.push_back(0);
v.push_back(0);
while(i<m){
if(i+4<m){
int a=v[i];
int b=v[i+1];
int c=v[i+2];
int d=v[i+3];
if(a+b>c+d||a+d<b+c){
if(flagg==0){
sum1+=a+b;
flagg=1;
i=i+2;
}
else{
sum2+=a+b;
flagg=0;
i=i+2;
}
}
else if(a+d>=b+c){
if(flagg==0){
sum1+=a;
flagg=1;
i=i+1;
}
else {
sum2+=a;
flagg=0;
i=i+1;
}
}
}
else{
if(flagg==0){
sum1+=v[i]+v[i+1];
sum2+=v[i+2];
flagg=1;
}
else if(flagg==1){
sum2+=v[i]+v[i+1];
sum1+=v[i+2];
flagg=0;
}
break;
}
}
if(sum1>sum2) cout<<"true"<<endl;
else cout<<"false"<<endl;
}
全部评论
第二题什么思路说下
点赞
送花
回复
分享
发布于 2017-09-13 21:05
第二题左神讲过一个类似的,一个先手,一个后手。。可以从暴力递归优化成动态规划
点赞
送花
回复
分享
发布于 2017-09-13 21:06
滴滴
校招火热招聘中
官网直投
第一题差不多,但是为什么我只有80%,百思不得其解……
点赞
送花
回复
分享
发布于 2017-09-13 21:07
好个“zuixiaogongbeishu”
点赞
送花
回复
分享
发布于 2017-09-13 21:13
第二题定义dp[i]为 a - b的差, 最后判断dp[n] > 0就可以了
点赞
送花
回复
分享
发布于 2017-09-13 21:19
不是招银科技吧
点赞
送花
回复
分享
发布于 2017-09-13 22:43

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务