长方形内正方形Square

该博客探讨了一种算法问题,即如何找到所有满足特定正方形数量t的长方形(n行m列),其中t是正整数。通过数学公式计算内部正方形总数,博主展示了如何解决这个问题。输出包括符合条件的长方形对(n, m)的数量及其排列顺序。" 132861808,19974251,使用Golang高效测试算法,"['Golang', '算法开发', '软件测试', '编程实践', '数据结构']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个长方形可以由多个正方形组成,然后题目要求根据输入的长方形内部的正方形的总数,来求得有多少个长方形(正方形是特殊的长方形)满足这类条件,并且输出对应的长和宽。

假设正方形单位长度为1,长为m宽为n的长方形,令n<=m,其内部有的正方形总数为: t = m*n + (m-1)*(n-1) + (m-2)*(n-2) + ......+1*(n-m+1) = m*m*n - (m+n)*m*(m-1)/2 + (m-1)*m*(2*m-1)/6;

m*m*n可以由公式化开,将m*n凑在一起,总共有m个m*n;

- (m+n)*m*(m-1)/2由-(m+n)-2(m+n)-......-(m-1)(n+m)再由等差公式得出;

(m-1)*m*(2*m-1)/6 由1 + 4 + 9 +......+(m-1)^2 带入平方和的前a项和 Sa = a*(a+1)*(2*a+1)/6得出;

最后由化简成的公式可以看出三个未知数求出两个,最后一个必然也求的出;

代码中写的时候把行当成m了,列是n,到了行大于列的时候停止;

★题目描述

YY 想找出所有的 <n,m>正整数对使得 n 行 m 列的表格中恰好包含 t 个正方形。

★输入

输入一行,包含一个正整数 t。(1≤t≤10的18次方)(1≤t≤10的18次方)

★输出

第一行输出一个整数 z,表示 <n,m> 对的个数。

接下来包含 z 行,每行两个正整数 n,m,以空格分隔,表示 n 行 m 列的表格中恰好包含 t 个正方形。

注意:输出 <n,m> 对时,以 n 递增的顺序输出,n 相同时以 m 递增的顺序输出。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值