ZOJ 2016 3935
2016-04-19 18:05
155 查看
ZOJ Problem Set - 3935
2016
Time Limit: 2 Seconds
Memory Limit: 65536 KB
In mathematics, a polygonal number is a number represented as dots or pebbles arranged in the shape of a regular polygon. The dots are thought of as alphas (units). These are one type of 2-dimensional figurate numbers. The following picture
shows how triangular numbers, square numbers, pentagonal numbers and hexagonal numbers represented as dots arranged in the shape of corresponding regular polygon.
2016 is not only a leap year but also a triangular and hexagonal year. If you are patient enough, you can count the number of the dots in the left triangle or in the right hexagon in the following picture. The number of dots in each shape is 2016.
Therefore, 2016 is a triangular-hexagonal-leap year. The previous triangular-hexagonal-leap year is 1540 and the next is 2556. So living to see 2016 is very rare experience.
You task is to list the triangular-hexagonal-leap years from 2016 to 990528. 990528 is also a triangular-hexagonal-leap year.
For example, if you are asked to list the triangular-hexagonal-leap years from 780 to 2556, the output should be:
//题意:
让你找出在【2016---990528】之间的满足以下三个条件的所有的数y;
条件1、这个数是闰年;
条件2、满足组成三角形的条件:n*(n+1)/2=y;
条件3、满足组成六边形的条件:m*(2*m-1)/2=y;
通过求解上面的两个方程可以得到x3=(-1+-sqrt(1+8*y))/2;
x6=(1+=sqrt(1+8*y))/4;
由这两个公式可以推出结果
2016
Time Limit: 2 Seconds
Memory Limit: 65536 KB
In mathematics, a polygonal number is a number represented as dots or pebbles arranged in the shape of a regular polygon. The dots are thought of as alphas (units). These are one type of 2-dimensional figurate numbers. The following picture
shows how triangular numbers, square numbers, pentagonal numbers and hexagonal numbers represented as dots arranged in the shape of corresponding regular polygon.
2016 is not only a leap year but also a triangular and hexagonal year. If you are patient enough, you can count the number of the dots in the left triangle or in the right hexagon in the following picture. The number of dots in each shape is 2016.
Therefore, 2016 is a triangular-hexagonal-leap year. The previous triangular-hexagonal-leap year is 1540 and the next is 2556. So living to see 2016 is very rare experience.
You task is to list the triangular-hexagonal-leap years from 2016 to 990528. 990528 is also a triangular-hexagonal-leap year.
Input
This problem has no input.Output
Please print each triangular-hexagonal-leap year in increasing order.For example, if you are asked to list the triangular-hexagonal-leap years from 780 to 2556, the output should be:
780 1128 1540 2016 2556
Sample Output
2016 2556 ... <-- some lines are skipped 990528
//题意:
让你找出在【2016---990528】之间的满足以下三个条件的所有的数y;
条件1、这个数是闰年;
条件2、满足组成三角形的条件:n*(n+1)/2=y;
条件3、满足组成六边形的条件:m*(2*m-1)/2=y;
通过求解上面的两个方程可以得到x3=(-1+-sqrt(1+8*y))/2;
x6=(1+=sqrt(1+8*y))/4;
由这两个公式可以推出结果
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; bool year(int y) { if(y%4==0&&y%100!=0||y%400==0) return true; return false; } int main() { for(int i=2016;i<=990528;i+=4) { if(!year(i)) continue; int s=sqrt(1.0+8*i); if(s*s!=1+8*i) continue; if((s-1)%2) continue;//判断能否组成三角形 if((s+1)%4) continue;//判断能否组成六边形 printf("%d\n",i); } return 0; }
相关文章推荐
- 团队作业(三)
- 常规选择器——简单选择器
- Docker 学习笔记
- Android-6.0-23的getColor()过时替代方法
- eclipse插件打包
- HDU 1800 (哈希 水~)
- 内存区域的划分和分配
- C#学习笔记二: C#类型详解
- Android 6.0 运行时权限处理
- Unity3D Terrain Settings 彻底搞懂 地形详细设置 全实验与解析 (一)Pixel Error
- codevs 1009 产生数 2002年NOIP全国联赛普及组
- iOS之应用程序启动过程及原理总结
- java中long值表达式需要注意的一种情况
- JS生成某个范围的随机数(四种情况)
- windbg 常用命令详解
- 游戏数据库设计 参考博客
- 请求和响应信息详解
- Android 个人学习笔记之---SAX解析XML文件
- 二叉树的所有路径
- (学习进度表)【第八周】