Mysterious Light——AT

简介: 题目描述Snuke is conducting an optical experiment using mirrors and his new invention, the rifle of Mysterious Light.Three mirrors of length N are set so that they form an equilateral triangle. Let the vertices of the triangle be a,b and c.

题目描述


Snuke is conducting an optical experiment using mirrors and his new invention, the rifle of Mysterious Light.


Three mirrors of length N are set so that they form an equilateral triangle. Let the vertices of the triangle be a,b and c.


Inside the triangle, the rifle is placed at the point p on segment ab such that ap=X. (The size of the rifle is negligible.) Now, the rifle is about to fire a ray of Mysterious Light in the direction of bc.


The ray of Mysterious Light will travel in a straight line, and will be reflected by mirrors, in the same ways as “ordinary” light. There is one major difference, though: it will be also reflected by its own trajectory as if it is a mirror! When the ray comes back to the rifle, the ray will be absorbed.


The following image shows the ray’s trajectory where N=5 and X=2.

微信图片_20220529165354.png

It can be shown that the ray eventually comes back to the rifle and is absorbed, regardless of the values of N and X. Find the total length of the ray’s trajectory.


Constraints

2≦N≦1012

1≦X≦N−1

N and X are integers.

Partial Points

300 points will be awarded for passing the test set satisfying N≦1000.

Another 200 points will be awarded for passing the test set without additional constraints.


输入


The input is given from Standard Input in the following format:N X


输出


Print the total length of the ray’s trajectory.


样例输入


5 2


样例输出


12


提示


Refer to the image in the Problem Statement section. The total length of the trajectory is 2+3+2+2+1+1+1=12.

#include <bits/stdc++.h>
#include <algorithm>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
#define wuyt main
typedef long long ll;
template<class T> inline T min(T &x,const T &y){return x>y?y:x;}
template<class T> inline T max(T &x,const T &y){return x<y?y:x;}
ll read(){ll c = getchar(),Nig = 1,x = 0;while(!isdigit(c) && c!='-')c = getchar();
if(c == '-')Nig = -1,c = getchar();
while(isdigit(c))x = ((x<<1) + (x<<3)) + (c^'0'),c = getchar();
return Nig*x;}
typedef long long ll;
#define read read()
///const ll inf = 1e15;
///const int maxn = 2e5 + 7;
const ll mod=1e9+7;
const ll inf=0x3f3f3f3f;
const int maxn=1e6+9;
char ss[maxn];
ll n,x;
int main(){
    n=read,x=read;
    ll ans=n;
    ll a=max(x,n-x),b=min(x,n-x);
    while(1){
        ll temp=a/b;
        ll temp1=a%b;
        ans+=2*b*temp;
        if(temp1==0)
            ans-=b;
        a=b,b=temp1;
        if(b==0)
            break;
    }
    printf("%lld\n",ans);
    return 0;
}


目录
相关文章
|
前端开发
CSS font-weight 值对应(Regular、Normal、Medium、Light)
CSS font-weight 值对应(Regular、Normal、Medium、Light)
2191 0
|
JavaScript 前端开发
一个dark mode的动画
一个dark mode的动画
131 0
一个dark mode的动画
|
前端开发 JavaScript
两个dark mode的动画
两个dark mode的动画
113 0
两个dark mode的动画
|
存储 JavaScript NoSQL
在dbcolinux上安装cozy-light
本文关键字:js个人云存储,cozy,node-legcay和谐模式
461 0
在dbcolinux上安装cozy-light
|
Java Windows 数据格式
解决Font 'STSong-light' is not available to the JVM.
困扰两天的问题,今天得到解决. 由于公司早些时候的产品是ireport-1.x系列下开发的,现在ireport都出到5.x系列,产品要做升级,就把老的xml文件拿来,放到新的ireport中,预览出来发现报错,各种报错.
4194 0
|
图形学 前端开发