HDU 5560 jrMz and angles(简单暴力枚举)

来源:互联网 发布:牛贝微信淘宝客v6.74 编辑:程序博客网 时间:2024/05/18 04:00

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5660
【中文题意】
问题描述
jrMz有两种角,第一种角都是正nn边形的内角,第二种角都是正mm边形的内角。jrMz想选出其中一些,某种角可以选多个或一个都不选,使得选出的所有角的度数之和恰好为360度。jrMz想知道这是否可能实现。
输入描述
有多组测试数据,第一行一个整数\left(1\leq T\leq10\right)(1≤T≤10),表示测试数据的组数。
对于每组测试数据,仅一行,两个整数n,m\left(3\leq n,m\leq100\right)n,m(3≤n,m≤100),之间有一个空格隔开。
输出描述
对于每组测试数据,仅一行,一个字符串,若可能实现则为Yes,若不可能实现则为No。
输入样例
3
4 8
3 10
5 8
输出样例
Yes
Yes
No
Hint
第一组数据中,jrMz可以选择1个第一种角和2个第二种角,因为90+135+135=36090+135+135=360。
第二组数据中,jrMz可以选择6个第一种角,因为6\times60=3606×60=360。
第三组数据中,jrMz无法选出一些度数之和为360度的角。

【思路分析】直接求出两种正多边形的内角是多少,然后直接两层for暴力枚举就好了。
【AC代码】

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){    int t,n,m;    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&m);        int x=180-(360/n);        int y=180-(360/m);        int flag=0;        for(int i=0;i*x<=360;i++)        {            for(int j=0;j*y<=360;j++)            {                if(i*x+j*y==360)                {                    flag=1;                    break;                }            }            if(flag)            {                break;            }        }        if(flag)        {            printf("Yes\n");        }        else        {            printf("No\n");        }    }    return 0;}
0 0
原创粉丝点击