大意: 给定$a,b$, $1\le a,b\le 1e12$, 定义

$f(a,0)=0$

$f(a,b)=1+f(a,b-gcd(a,b))$

求$f(a,b)$.

观察可以发现, 每次$b$一定是减去若干个相同的$gcd$, 并且每次减的$gcd$一定是递增的, 并且一定是在$gcd$最接近$b$的时候开始减, 可以预处理出所有这样的位置, 然后模拟.

#include <iostream>
#include <cstdio>
#include <math.h>
#include <queue>
#define REP(i,a,n) for(int i=a;i<=n;++i)
#define pb push_back
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;} ll x,y;
vector<ll> fac, q;
int main() {
cin>>x>>y;
int mx = sqrt(x+0.5);
REP(i,1,mx) if (x%i==0) {
fac.pb(i);
if (x/i!=i) fac.pb(x/i);
}
for (ll t:fac) q.pb(y/t*t);
sort(q.begin(),q.end(),greater<ll>());
q.erase(unique(q.begin(),q.end()),q.end());
q.erase(q.begin()),q.pb(0);
ll now = y, ans = 0;
for (ll t:q) {
ll g = gcd(x,now);
if ((now-t)%g==0) {
ans += (now-t)/g;
now = t;
}
}
cout<<ans<<endl;
}

最新文章

  1. Jenkins用HTTP Request Plugin插件进行网站的监控(运维监控)
  2. 构建Logstash+tomcat镜像(让logstash收集tomcat日志)
  3. .NET Core尝试
  4. 1215课后练习----indexOf的用法
  5. C#注册表操作,根据键取值
  6. CSS3选择器 :nth-child(n) 详解
  7. java 状态模式 解说演示样例代码
  8. HTML DOCTYPE文档类型举例说明
  9. 疑问:Spring中构造器、init-method、@PostConstruct、afterPropertiesSet孰先孰后,自动注入发生时间
  10. 201521123092《java程序设计》第十周学习总结
  11. Python-分支循环- if elif for while
  12. DotNetCore 3.0 助力 WPF 开发
  13. JavaScript 条件语句
  14. inconfont的使用
  15. 163邮箱SMTP设置
  16. dubbo负载均衡策略和集群容错策略都有哪些
  17. 数据仓库:Mysql大量数据快速导出
  18. BeanUtils.copyProperties的简单示例
  19. c166 -div
  20. 【LOJ】#2118. 「HEOI2015」兔子与樱花

热门文章

  1. Spring Security整合JWT,实现单点登录,So Easy~!
  2. Mysql -- 设置指定配置文件启动
  3. Flutter移动电商实战 --(35)列表页_上拉加载更多制作
  4. Python下划线命名模式
  5. jmeter-移动端接口测试中遇到的问题,http与https
  6. Windows Qt 项目中文乱码
  7. (转载)如何创建一个以管理员权限运行exe 的快捷方式? How To Create a Shortcut That Lets a Standard User Run An Application as Administrator
  8. python-Web-flask-蓝图和单元测试
  9. OpenGL学习(4)——纹理(补)
  10. vue文字向上滚动