Luogu P2090 数字对
可以发现,最终状态为(n,i)(i<=n),枚举最终状态,这题为辗转相减求进行了几次,可以优化成辗转相除
时间
#include<cstdio>
#include<iostream>
using namespace std;
int ans;
inline int sum(int a,int b)
{
if(!b) return 2e9;
if(b==1) return a-1;
return sum(b,a%b)+a/b;
}
int main()
{
int n; ans=2e9;
scanf("%d",&n);
for(int i=1;i<n;i++)
ans=min(ans,sum(n,i));
printf("%d\n",ans);
return 0;
}

浙公网安备 33010602011771号