题解 | #矩形分割#

矩形分割

https://ac.nowcoder.com/acm/contest/66651/K

K题

这题用贪心的思想,假如把一块矩形进行分割,应该是要把短边当作正方形的边来切。

以此规律进行切割,然后不断累加切出来的边长即可。

这边还要注意超时问题,优化一下应该才能通过。

#include<bits/stdc++.h>
using namespace std;
void solve()
{
	long long int n,m,ans=0,tar;
	cin>>n>>m;
	if(n>m)swap(n,m);
	while(n!=0)
	{
		tar=m/n;
		ans+=n*tar;
		m-=n*tar;
		if(n>m)swap(n,m);
		if(n==m)
		{
			ans+=n;
			break;
		}
	}
	cout<<ans<<endl;
	
}
int main()
{
	int t=1;
	while(t--)
	{
		solve();
	}
}
全部评论
不用优化的,2ms就过了, tar变量没有必要 , 至多为2 其实单纯暴力就行 ans += min(n,m) ; 循环结束条件为 (n = m) ; 之后 更新较大边即可
1 回复 分享
发布于 2023-10-06 20:41 浙江

相关推荐

合适才能收到offe...:些许风霜罢了查看图片
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务