jrMz and angles
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
jrMz有两种角,第一种角都是正n边形的内角,第二种角都是正m边形的内角。jrMz想选出其中一些,某种角可以选多个或一个都不选,使得选出的所有角的度数之和恰好为360度。jrMz想知道这是否可能实现。
输入描述
有多组测试数据,第一行一个整数(1≤T≤10),表示测试数据的组数。 对于每组测试数据,仅一行,两个整数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=360。 第二组数据中,jrMz可以选择6个第一种角,因为6×60=360。 第三组数据中,jrMz无法选出一些度数之和为360度的角。
#include<iostream>
using namespace std;
int main()
{
double num[105];
for(int i=3;i<=100;i++)
{
num[i]=180.0-1.0*360/i;
}
int n;
while(cin>>n)
{
while(n--)
{
int x,y;
cin>>x>>y;
int flag=0;
if(x<3||y<3||x>100||y>100){cout<<"No"<<endl;continue;}
for(int i=0;i<=6;++i)
{
for(int j=0;j<=6;++j)
{
if(num[x]*i+num[y]*j==360.0)
{flag=1;
break;}
}
if(flag==1)break;
}
if(flag==1)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
return 0;
}