网易 笔试代码, 魔法金币,4的倍数

网易前两道编程,魔法金币,4的倍数  两道AC ,第三道 括号不会
//第一道 魔法金币
#include<iostream>
#include <vector>
using namespace std;
int main()
{
	    int n;
	    vector<char>a;
	    while (cin >> n)
		{
		    int i, j;
		    while (n != 0)
			{
				if (n % 2 == 0)
				{
					a.push_bach('2');
					n = (n - 2) / 2;
				}
				else
				{
					a.push_back('1');
					n = (n - 1) / 2;
				}
			}
		for (i = a.size() - 1; i >= 0; --i)
			cout << a[i];
	   }
	return 0;
 }



#include <iostream>
#include <string>
//第二道 4的倍数    思想是 2*(为4的倍数的个数+为2的倍数个数但不为4的倍数的个数/2)+1<n  为NO  否则 为YES
int main()
{
	int t;
	while (cin >> t)
	{
		string s1 = "Yes";
		string s2 = "No";
		int i, j;
		int *n;
		n = new int[t];
		int count1;;//记录为4倍数的个数
		int count2;//记录为2的倍数但不是4的倍数的个数
		int c;
		for (i = 0; i<t; i++)
		{
			cin >> n[i];
			int *A;
			A = new int[n[i]];
			count1 = 0;//
			count2 = 0;
			for (j = 0; j<n[i]; j++)
			{
				cin >> A[j];
				if (A[j] % 4 == 0)
				{
					++count1;
				}
				else if (A[j] % 2 == 0)
				{
					++count2;
				}
				else
					continue;
			}

			c = (count2) / 2;
			if ((c + count1) * 2 + 1 >= n[i])
				n[i] = 1;
			else
				n[i] = 0;
			free(A);//注意这里不写 内存溢出,就得分为0

		}

		for (i = 0; i<t - 1; i++)
		{
			if (n[i] == 1)
				cout << s1 << endl;
			else
				cout << s2 << endl;
		}
		if (n[t - 1] == 1)
			cout << s1;
		else
			cout << s2;
	}
	return 0;
}

全部评论

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务