FZU2284 24(有一个数满足,后面的数一定可以通过转化为这个数而满足)

题目链接

http://acm.fzu.edu.cn/problem.php?pid=2284

题目

有一天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=1,2,3时,显然都不满足。
当n=4时,1*2*3*4=24,满足。
当n=5时,1*2*(3+4+5)=24,满足.
后面的数都可以转化成上面的数从而满足。
如:
n=6,令(6-5)去乘以1*2*3*4。
n=7,令(7-6)去乘以1*2*(3+4+5).

AC代码

#include 
#include 
using namespace std;

int main()
{
    int T;
    while(~scanf("%d",&T))
    {
        while(T--)
        {
            int n;
            scanf("%d",&n);
            printf("%s\n",n>=4?"Yes":"No");
        }
    }
    return 0;
}

你可能感兴趣的:(FZU2284 24(有一个数满足,后面的数一定可以通过转化为这个数而满足))