【牛客2020.10.24】卡片

卡片


在这里插入图片描述
在这里插入图片描述

解题思路

其实吧,这道题挺简单的。
我们将B(下面都会用A和B代表秦王和柱子 (秦王绕柱走) )展开,当成一条线,那么我们就可以找到这条线和A的边长的最小公倍数——因为题目要求A回到原来的点。
但是如果你只这样做的话,我们看一下样例#1。咦?为什么输出是6而样例是8呢?其实你忽略了一点:在A绕过B的角的时候,只要不是恰巧吻合,就要比正常情况多转一次,我们再算出A的边长和B的边长的最小公倍数,我们用这个数除以A的边长,算出在这一段中A要滚几次,如果我们对于这个数字在加上角的个数,那么这就是对于这一段长A真正要滚的次数。

code

#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;

ll a,n,b,m;

int main()
{
	cin>>a>>n>>b>>m;
	ll s1=1,s2=1;
	while(b*s1%a!=0)
		s1++;
	while((b*m*s2)%a!=0)
		s2++;
	cout<<s2*m*b/a/(b*s1/a)*(b*s1/a+(s1-1))<<endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值