…… 这个是你算法的问题了
by dengyujie2020 @ 2022-08-10 21:09:21
@[Qianxi_MRD](/user/586046) 这是[AC](https://www.luogu.com.cn/record/83272544)程序,可以直接提交
```
#include<bits/stdc++.h>
long long ans;
int main()
{
cin》》x》》y;
if(x》y) swap(x,y);
while(x》0)
{
if(x《y) swap(x,y);
ans+=4*y*(x/y);
x-=x/y*y;
}
cout<<ans;
return 0;
}
```
你是一个一个去做,去减
但是用包含除+取下整更快,毕竟x,y<10^18
by dengyujie2020 @ 2022-08-10 21:13:53
#### 我发现最后一个点超时了
我想了想,可以优化一下:
如果 tx 比 ty 大很多,tx = tx - ty就要重复很多次,浪费时间,所以把多个减法换成除法就可以了,也就是tx = tx % ty,然后上面的sum = sum + ty * 4 就要乘相应的(tx / ty)次
# 代码
```
#include<iostream>
using namespace std;
int main(){
long long x,y;
cin>>x>>y;
long long sum=0;
long long tx=x,ty=y;//……好像不需要??
for(;;){//话说while它不香吗?
if(tx>ty){
sum=sum+ty*4*(tx/ty);
tx=tx%ty;
}
else{
sum=sum+tx*4*(ty/tx);
ty=ty%tx;
}
if(tx==0||ty==0) break;
}
cout<<sum;
}
```
by WZRYWZWY @ 2022-08-10 21:21:48
@[Qianxi_MRD](/user/586046)
by WZRYWZWY @ 2022-08-10 21:22:40
主要问题出在if和else里面,一片一片的耕田速度太慢了,~~编不下去了,~~不多说,上源码
![源代码](https://cdn.luogu.com.cn/upload/image_hosting/e9anx72h.png)
修改之后的版本(已AC[提交记录](https://www.luogu.com.cn/record/83282186))
![修改版](https://cdn.luogu.com.cn/upload/image_hosting/392viosl.png)
by _miku @ 2022-08-10 22:50:57
感谢各位da lao
本贴完结
by Qianxi_MRD @ 2022-08-11 19:59:43