AT2686
题目翻译
找一个序列,使这个序列中的
代码思路
- 我们知道
4=2*2=1*4 ,也就是说序列中每2 个数中有2 种情况。
-
二个数中有一个数是
4 的倍数。 -
二个数中都是
2 的倍数。
- 因为是
2 个数的乘积为一组,所以要n/2 。
-
-
反之,输出
No 。代码
#include<bits/stdc++.h> using namespace std; int n; int s(int c){ //便于指针时的判断 int l=n; return l; } void f(int* x, int* y) { int a; int num1=0,num2=0; //定义实数。 for(int i=1;i<=s(n);i++){ cin>>a; if(a%4==0) num1++; //先判断整除4的时候。 else if(a%2==0) num2++; } *x=num1; //指针指向 num1。 *y=num2; //指针指向 num2。 } int main(){ int x,y; cin>>n; f(&x,&y); if(y/2+x>=n/2) //条件满足。 cout<<"Yes"; else //条件不满足。 cout<<"No"; }