首页 > 其他分享 >旋转游戏

旋转游戏

时间:2023-04-30 23:46:04浏览次数:35  
标签:游戏 卡片 int lili 旋转 边长 pipi

题目描述

pipi 和 lili 各带来一个正多边形卡片。

pipi 的卡片是边长为 \(A\) 的正 \(M\) 边形,lili 的卡片是边长为 \(B\) 的正 \(N\) 边形。

pipi 和 lili 将两张卡片摆放在一起,其中两张卡片并不重叠,并且有至少一个公共顶点和一条公共边。

pipi 喜欢旋转,因此她沿 lili 的卡片顺时针旋转自己的多边形。旋转的中心点是多边形公共边上一点,且旋转过程中两张卡片不重叠。

pipi 想知道,在旋转多少次过后,pipi 的正多边形会回到原位置。

【例如】:pipi 的卡片是边长为 \(2\) 的正 \(4\) 边形,lili 的卡片是边长为 \(3\) 的正 \(4\) 边形。

前两次旋转如图所示:


输入格式

一行,四个整数 \(A,M,B,N\) ,含义如题目描述所述。


输出格式

一行,一个数 \(Ans\) ,表示 pipi 旋转的次数。


样例输入

2 4 3 4

样例输出

8

提示

对于 \(100\%\) 的数据,\(1 ≤ A ≤ B ≤ 10^6\) ,\(3 ≤ N,M ≤ 10^6\) 。


很有意思的一道题目

不难看出,如果 \(A\) 从 \(B\) 的一条边旋转到另一条边,两次接触 \(B\) 的长度之和必定是 \(A\) 的边长

那么便可以把 \(A\) 每次旋转出来的图形表示在一根数轴上

也就是说 \(A\) 的个数就是 \(A\) 的边长与 \(B\) 的周长的最小公倍数,再除以 \(A\) 的边长

但我们忽略了一点,当我们把这些旋转出来的图形放在数轴上时,有一部分没有放上去,那便是转角处的 \(A\)

转角处的 \(A\) 有两种情况,一种是刚好有一个顶点与 \(B\) 重合,这在第一次已经算过了,要删掉,第二种便是普通情况

普通情况下就是 \(A\) 的边长与 \(B\) 的周长的最小公倍数,再除以 \(B\) 的边长即可

特殊情况则需要 \(A\) 的边长与 \(B\) 的边长的最小公倍数,这个便是每隔多长会出现一次特殊情况

再用 \(A\) 的边长与 \(B\) 的周长的最小公倍数除以这个数便是特殊情况的个数

顺便放张样例转化成这个思路的图,自行体会吧

\(Code:\)

#include<bits/stdc++.h>
#define int long long//不开long long见祖宗
using namespace std;
int a,m,b,n;

int gcd(int a,int b){
	if(a%b==0) return b;
	else return gcd(b,a%b);
}
int lcm(int a,int b){
	return a*b/gcd(a,b);
}
signed main()
{
	scanf("%lld%lld%lld%lld",&a,&m,&b,&n);
	int x=lcm(a,n*b);
	int c1=x/a;
	int y=lcm(a,b);
	int c2=x/b-x/y; 
	printf("%lld",c1+c2);
	return 0;
}

标签:游戏,卡片,int,lili,旋转,边长,pipi
From: https://www.cnblogs.com/HEIMOFA/p/17365990.html

相关文章

  • 软件多开器,游戏多开器,窗口多开器,PC端游多开器,PC多开器
      电脑通用多开器是一款游戏多开软件,该软件可以让用户不用再受游戏只能单开的限制,想开几个开几个。用户只需启用该多开器,然后选择游戏路径就可以了,这样每次点击运行按钮就会启动一个游戏客户端了,下载地址:https://www.safeboxie.com/。 【软件功能】1、可解除许多限制......
  • mac太空射击游戏:Nova Drift (新星漂移)中文版
    NovaDrift是一款激动人心的太空射击游戏。NovaDriftMac整合了现代独立游戏风格和游戏历史上最深的根源。它不仅具有时尚和性感的外观,而且具有平稳的控制功能。玩家控制着一艘不断开发的生物机械船,面对敌人的大量奇怪而致命的疲劳,将垂死的星星驱逐出空隙。NovaDriftMac游戏介......
  • 皇后游戏 题解
    luoguP2123题目描述皇后有\(n\)位大臣,每位大臣的左右手上面分别写上了一个正整数。恰逢国庆节来临,皇后决定为\(n\)位大臣颁发奖金,其中第\(i\)位大臣所获得的奖金数目为第\(i-1\)位大臣所获得奖金数目与前\(i\)位大臣左手上的数的和的较大值再加上第\(i\)位大臣右手......
  • matlab设置坐标轴颜色以及标签换行显示、旋转显示
    set(gca,'ycolor',[000]);%颜色%设置不同字体、字型、以及换行显示,换行显示用{}包住每行字即可yr=ylabel('\it\fontname{TimesNewRoman}y_{CS}^{M4}...\rm\fontname{TimesNewRoman}\cdot{10}');%旋转跳跃set(yr,'Rotation',0,'position',[5.71100]......
  • 点云数据旋转
    点云数据旋转 #include<iostream>#include<pcl/io/pcd_io.h>#include<pcl/point_types.h>#include<pcl/filters/passthrough.h>#include<pcl/visualization/pcl_visualizer.h>intmain(intargc,char**argv){p......
  • CSSE1001/CSSE7030 卡片游戏
    CSSE1001/CSSE7030Duedate:28thApril202316:00GMT+101IntroductionSlaytheSpireisarogue-likedeckbuildingcardgameinwhichaplayermustbuildadeckofcards,whichtheyuseduringencounterswithmonsters.DetailsoftheoriginalSlaytheSpire......
  • 题目 3158: 蓝桥杯2023年第十四届省赛真题-三国游戏(贪心)
    题目描述小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X,Y,Z(一开始可以认为都为0)。游戏有n个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第i个事件发生时会分别让X,Y,Z增加Ai,Bi,Ci。当游戏结束时(所有事件的发生与否已......
  • 电脑报:欧洲游戏势力崛起
    近两年来,由于美国游戏原创研发实力过于疲软,以EA为首的美国游戏公司并没有拿出叫好又叫座的新作品。相反,欧洲各国,尤其是以英国、法国、俄罗斯和德国为代表的欧洲国家正在游戏原创研发领域大踏步的前进。2008年6月,根据尼尔森(NislsenGames)进行的一项调查数据显示,欧洲地区正式......
  • 45. 跳跃游戏 II
    给定一个长度为n的0索引整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意nums[i+j]处:0<=j<=nums[i]i+j<n返回到达nums[n-1]的最小跳跃次数。生成的测试用例可以到......
  • Game Engine Architecture(游戏引擎架构)
    推荐序1最初拿到《GameEngineArchitecture》一书的英文版,是编辑侠少邮寄给我的打印版。他建议我接下翻译此书的合同。当时我正在杭州带领一个团队开发3D游戏引擎,我和我的同事都对这本书的内容颇有兴趣,两大本打印的英文书立刻在同事间传开。可惜那段时间个人精力顾及不来,把近千页......