美团笔试编程题交流

灯泡问题:AC
#include<iostream>
#include<vector>
using namespace std;

int main()
{
    long n;
    while(cin >> n)
    {
			int ai;
			bool flag;
			int cnt = 0;
			vector<int> lamp;
			for(int i =0; i <n; ++i){
				cin >> ai;
				lamp.push_back(ai);
			}
			
			flag = lamp[0];
			
			for(int i =1; i <n; ++i){
				if(lamp[i] == flag){
					continue;
				}else{
					++cnt;
					flag = lamp[i];
				}
			}
			
			if((lamp[0] ==1) && (cnt & 1) || (lamp[0] ==0) && !(cnt & 1))
				cout << "Bob" <<endl;
			else
				cout << "Alice" <<endl;

    }
    return 0;
}

第二题:被7整除,没有ac,想不到思路,暴力+优化结果,70% 超时。
#include<iostream>
#include<vector>
using namespace std;

long long combine2Num(long long n1, long long n2){
	int bit = 0;
	long long t = n2;
	while(n2/10){
		++bit;
		n2 /= 10;
		n1 *= 10; 
	}
	n1 *= 10; 
	return n1 + t;
}

int main()
{
    int n;
    while(cin >> n)
    {
			int ret = 0;
			int ai;
			int nn = 0;
			vector<long long> a;
			bool is7n[n];
			for(int i =0; i <n; ++i){
				cin >> ai;
				a.push_back(ai);
			}
			
			for(int i = 0; i < n;++i){
				if(a[i] % 7 == 0){
					is7n[i] = true;
					++nn;
				}
				else
					is7n[i] = false;
			}

			ret = nn*(nn-1);
			for(int i = 0 ;i < n;++i){
				if(is7n[i]){
						continue;
				}
				for(int j = i+1; j < n; ++j){				
					if(is7n[j]){
              continue;
          }					
					if( (combine2Num(a[i],a[j]) % 7) == 0){						
						++ret;
					}
					if( (combine2Num(a[j],a[i]) % 7) == 0){
						++ret;
					}
				}
			}
			cout <<ret<<endl;
    }
    return 0;
}
求各位大佬的思路啊~~~
#美团#
全部评论
666
点赞 回复 分享
发布于 2017-09-14 22:33
灯泡也只能70%的渣渣😂路过,7倒是跟你一样
点赞 回复 分享
发布于 2017-09-14 22:36
能说下思路吗?直接看代码有点懵
点赞 回复 分享
发布于 2017-09-14 22:37

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务