网易前两道编程,魔法金币,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;
}