首页 > 编程知识 正文

蓝桥杯题目类型,蓝桥杯小学组真题

时间:2023-05-03 15:50:10 阅读:10302 作者:3265

小组中有共享蓝桥杯主题的伙伴:

乍一看,我觉得有什么巧妙的解法。 实际上是用暴力解决问题。

根据对称性,首先求出满足第一象限内条件的有意画板数,再乘以4即可得到答案;

第一象限内,每个故意画板的右上顶点是这个故意画板上离圆心最远的点。 也就是右上顶点在圆内,故意的画板也会在圆内

想想为什么。 如果右上顶点坐标为(p,q ) (p=1,q=1),则剩下的三个顶点坐标分别为(p-1,q-1 )、p,q-1 )、p-1,q ) )

右上顶点刚好一一对应到一个故意的画板

根据圆内点的理论,点(p,q )在圆内的充电条件为p ) 2q ) 2r ) 2,其中圆的中心为原点(0,0 ),半径为r。

结论:计算到第一象限内圆心的距离不超过r的点(x,y ) (x=1,y=1) )的个数,并将其乘以4是答案。

方法1 )公共静态输入计数1 ({ intr2=1000 * 1000; int count=0; for(intI=1; i=1000; I ) for(intj=1; j=1000; j () if (I * ij * j=R2 ) ) { count; } }返回计数* 4; //3137548}方法2 :公共静态int count2() { int r2=1000*1000; //小优化: 0.7 ^ 20.7 ^ 21//(1,1 )-- (700,700 )范围内的点必须在圆内int count=700*700; for(intI=701; i=1000; I ) for(intj=1; j=700; j ) if(I*Ij*j=R2 ) { count =2; }}for(intI=701; i=1000; I ) for(intj=701; j=1000; j () if (I * ij * j=R2 ) ) { count; } }返回计数* 4; //3137548}方法3 :特别感谢小组的另一个伙伴分享了这个优雅的答案。这种实现相比前2种,其效率提升在10倍以上

其想法是,遍历可能的横坐标x,求出圆上的点(x,y ),其中y=sqrt(r*r-x*x ) ) ) ),将y向下舍入为实际

公共静态int count3() { int sum=0; for(intx=1; x=1000; x () sum=(int ) math.sqrt ) 100000-x*x ); }返回和* 4; //3137548} PS:Math.sqrt ) )在底层实现中,采用类似牛顿迭代法的思路是高效的。

不管你是在校学生还是资深搬运师,都欢迎你的加入。 请输入神秘的刷问题交流群

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。