有一天dark sil在玩24点,被杰哥看见了,杰哥就想到了这样一个问题:假设有N张卡片,上面写着1,2,3....N,是否可以用这些卡片组成24点呢?要求是只能使用加减乘除(整除),所有的卡片都必须用上,并且只能使用一次。如果可以组成24点,则输出"Yes",否则输出“No”.
假设N等于5,那么存在1*2*(3+4+5)=24.
Input
包含多组测试数据,测试数据的第一行输入一个数字T,表示接下去输入T组数据。
接下去T行,每一行输入一个N,意思如题目中所描述。
T≤30,n≤100000
Output
对于每组数据,输出一行"Yes"或者“No”
Sample Input
2
3
4
Sample Output
No
假设N等于5,那么存在1*2*(3+4+5)=24.
Input
包含多组测试数据,测试数据的第一行输入一个数字T,表示接下去输入T组数据。
接下去T行,每一行输入一个N,意思如题目中所描述。
T≤30,n≤100000
Output
对于每组数据,输出一行"Yes"或者“No”
Sample Input
2
3
4
Sample Output
No
Yes
思路:N为4时,有1*2*3*4=24;N为5时,有1*2*(3+4+5)=24;一个数乘以一之后不会发生改变,利用这一性质就能发现当N为偶数时都能写成1*2*3*4*(6-5)*(8-7)=24这种形式,当N为奇数时能写成1*2*(3+4+5)*(7-6)*(9-8)=24,N大于3时可以构成24
去年数据结构的结论题目
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <map>
#include <set>
#include <cmath>
using namespace std;
typedef long long ll;
const int N = 1005;
int main()
{
int t;
while(cin>>t){
while(t--){
int n;
cin>>n;
if(n>=4){
printf("Yes\n");
}else{
printf("No\n");
}
}
}
return 0;
}