BestCoder Round #79 (div.2)-jrMz and angles,,暴力求解~
jrMz and angle
- 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
- 第一组数据中,jrMz可以选择1个第一种角和2个第二种角,因为90+135+135=36090+135+135=360。
- 第二组数据中,jrMz可以选择6个第一种角,因为6\times60=3606×60=360。
- 第三组数据中,jrMz无法选出一些度数之和为360度的角。
看到这题的数据范围我就笑了,当第一反应就是暴力求解,我们知道正n(n>=3)边形内角和为 180*(n-2),每个内角的角度就可以表示出来,然后两层循环遍历;
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<iostream>
- #include<cmath>
- using namespace std;
- const int N=1000000+10;
- int a[N];
- int main()
- {
- int t,n,m;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&m);
- int x1=180-360/n;
- int x2=180-360/m;//正m边形的内角;
- int f=0;
- for(int i=0;; i++)
- {
- if(f||i*x1>360)
- break;
- for(int j=0;; j++)
- {
- if(i*x1+j*x2==360)
- {
- f=1;
- break;
- }
- if(j*x2>360)
- break;//限制条件,这样没有搜下去的必要了;
- }
- }
- if(f)
- printf("Yes\n");
- else
- printf("No\n");
- }
- return 0;
- }
不过题解好像要更简单一点:
不妨令n\leq mn≤m。
如果n>6n>6,由于所有角都大于120度且小于180度,也就是说,两个角一定不够,而三个角一定过多。因此一定无解;
当n\leq6n≤6时,如果n=3n=3或n=4n=4或n=6n=6,那么显然只需要正nn边形的角就可以了。如果n=5n=5,则已经有一个108度的角。若这种角:不取,则显然仅当m=6m=6时有解;取1个,则还差360-108=252360−108=252(度),但是没有一个正mm边形的内角的度数是252的约数;取2个,则还差360-108\times2=144360−108×2=144(度),这恰好是正10边形的内角,取3个,则还差360-108\times3=36360−108×3=36(度),也不可能满足;取大于3个也显然不可能。
因此得到结论:当nn和mm中至少有一个为3或4或6时,或者当nn和mm中一个等于5另一个等于10时,有解,否则无解,时间复杂度为
O\left(T\right)O(T)。
BestCoder Round #79 (div.2)-jrMz and angles,,暴力求解~的更多相关文章
- BestCoder Round #79 (div.2)
1001.没推到题解那么细,枚举一下也可以.用通分可以避免小数精度问题. #include<iostream> #include<stdio.h> using namespac ...
- BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)
Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- BestCoder Round #68 (div.2) tree(hdu 5606)
tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- BestCoder Round #11 (Div. 2) 题解
HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- hdu5635 BestCoder Round #74 (div.2)
LCP Array Accepts: 131 Submissions: 1352 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 13 ...
- hdu 5636 搜索 BestCoder Round #74 (div.2)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- hdu5634 BestCoder Round #73 (div.1)
Rikka with Phi Accepts: 5 Submissions: 66 Time Limit: 16000/8000 MS (Java/Others) Memory Limit: ...
- hdu5631 BestCoder Round #73 (div.2)
Rikka with Graph Accepts: 123 Submissions: 525 Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
- hdu5630 BestCoder Round #73 (div.2)
Rikka with Chess Accepts: 393 Submissions: 548 Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
随机推荐
- Suricata的性能
不多说,直接上干货! 见官网 https://suricata.readthedocs.io/en/latest/performance/index.html Docs » 7. Performanc ...
- Git团队协作 - 新feature的开发过程
新feature的开发过程 建议使用SmartGit,以下是命令行操作 git checkout -b dev (对于没有分支的人)新建dev分支 git pull origin dev拉取最新数据 ...
- 07/29/2013 02:10:02 AM - CMDPHP: Poller[0] Host[6] DS[10] WARNING: Result from SNMP not valid. Partial Result: U
snmpwalk -c public -v2c 客户端ip地址 自定义的oid 能取到数据,但是服务器端就是图片一片空白 rrdtool fetch 文件名.rrd 查看到的全都是nan cac ...
- OCP 11g 第四章练习
练习 4-1 配置Oracle Net 在本练习中, 将使用图形化工具和命令行工具来建立一个完整的Oracle Net 环境. 由此, 读者可看出在Windows 和 Linux 系统中的区别. 1. ...
- loadrunner:文本检查点web_reg_find和web_find两个函数的区别
web_reg_find是先注册(register)后查找的:使用时将它放在请求语句的前面. 而web_find是查找前面的请求结果:使用时将它放在请求语句的后面. 另二者的参数也完成不一样的,web ...
- php用面向对象从mysql取数据
<?php //建立数据库的链接@$_mysqli = new mysqli('localhost','root','123456','dbname');if(mysqli_connect_er ...
- linux截图工具
推荐:deepin-scrot 满足功能: 能够自定义快捷键(Ctrl+Alt+A) 小巧快速自定义选择区域进行截图 有简单的绘图功能 可以快速的保存到剪切版(双击图片) P.S.:双重截图
- 如何处理Docker的错误消息request canceled:Docker代理问题
在本地安装Kubernetes时,遇到错误消息: request canceled while waiting for connection(Client.Timeout exceeded while ...
- 你的项目刚刚启动?是时候考虑Globalization了!
今天继续由SAP成都研究院非典型程序猿, 菜园子小哥王聪给大家带来分享. 关于这个很长的定语的由来,请参考这篇文章,里面有王聪的背景介绍,包括他种菜的特长:当我用UI5诊断工具时我用些什么. 秋天到了 ...
- Linux centos7开机界面出现多个选项
centos7开机界面出现多个选项时 前面几个选项正常启动,最后一个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统) 在CentOS更新后,并不会自动删除旧内核.所以在启动选项中会有多个内 ...