福州大学第十五届程序设计竞赛 A - 24 FZU - 2284 1--n个数字是否可以构成24

有一天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

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;
}

猜你喜欢

转载自blog.csdn.net/deepseazbw/article/details/80573068
24
今日推荐