正题

题目链接:https://atcoder.jp/contests/arc122/tasks/arc122_c


题目大意

一个数对开始是(0,0)(0,0)(0,0),每次可以选择一个数加一或者让一个数加上另一个数,求使得第一个数变成nnn的方案。步数不超过130130130。

1≤n≤10181\leq n\leq 10^{18}1≤n≤1018


解题思路

官方是斐波那契,但是我考试的时候过法比较神奇。

看上去比较像更相减损,但是不知道第二个数是多少,感觉我们应该能找到一个数对(n,k)(n,k)(n,k)使得它更相减损的步骤很少。

考虑的分散一点,设n=xk+kn=xk+kn=xk+k。那么我们相当于要找到一个xxx使得xk+kk=1x\frac{xk+k}{k}=\frac{1}{x}kxk+k​=x1​。

然后解出来得到x=5−12x=\frac{\sqrt 5-1}{2}x=25​−1​(其实就是黄金分割率)。

所以我们让k=n×5−12k=n\times \frac{\sqrt 5-1}{2}k=n×25​−1​然后更相减损下去,之后会发现有点误差,我们前后各枚举100001000010000找到一个满足条件的就好了。


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#define ll long long
using namespace std;
ll n;vector<ll> z;
void print(ll x,ll y){if(!x){while(y&&z.size()<=130)y--,z.push_back(2);return;}if(!y){while(x&&z.size()<=130)x--,z.push_back(1);return;}if(x<y) print(x,y-x),z.push_back(4);else print(x-y,y),z.push_back(3);
}
signed main()
{scanf("%lld",&n);double M=(sqrt(5.0)-1.0)*(double)n/2.0;ll m=M;for(ll i=max(m-10000,0ll);i<=m+10000;i++){print(n,i);if(z.size()>130){z.clear();continue;}printf("%lld\n",z.size());for(ll i=0;i<z.size();i++)printf("%lld\n",z[i]);break;}return 0;
}

ARC122C-Calculator【乱搞,构造】相关推荐

  1. 【uoj#142】【UER #5】万圣节的南瓜灯 乱搞+并查集

    题目描述 给出一张 $n\times m$ 的网格图,两个格子之间有一条双向边,当且仅当它们相邻,即在网格图中有一条公共边. 特殊地,对于 $1\le x\le n​$ ,$(x,1)​$ 和 $(x ...

  2. bzoj4900【CTSC2017】Day1T1 密钥 cipher 乱搞

    题目大意: 有一个包含n个点(n=2*k+1)的环(密钥),环上有k个点为A,有k个点为B,剩下一个点为X. 对于每一个A,从X顺时针走到这个A,如果途中A的数目严格多于B的数目,那么这个A为强的.一 ...

  3. AcWing 397. 逃不掉的路(边双连通分量缩点成树 + 树链剖分乱搞)

    整理的算法模板合集: ACM模板 我们知道在同一个边双连通分量中的点没有必经边(因为至少有两条分离的路径). 所以我们直接tarjan求出桥后缩点,然后求一下树上两点间的距离即可. 那么如何求树上两点 ...

  4. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  5. BZOJ-1800 飞行棋 数学+乱搞

    这道题感觉就是乱搞,O(n^4)都毫无问题 1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1172 So ...

  6. 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞

    3578: GTY的人类基因组计划2 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 367  Solved: 159 [Submit][Status ...

  7. BZOJ4401:块的计数(乱搞)

    Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构--块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对这种事情毫无兴趣,只是 ...

  8. Luogu3732 [HAOI2017] 供给侧改革 【后缀数组】【线段树】【乱搞】

    题目分析: 这道题我是乱搞的,因为他说$01$串是随机的. 那么我们可以猜测能够让LCP变大的地方很少.求出后缀数组之后可能让LCP变大的地方就等价于从大到小往height里动态加点同时维护这个点左右 ...

  9. 【uoj#209】[UER #6]票数统计 组合数+乱搞

    题目描述 一个长度为 $n$ 的序列,每个位置为 $0$ 或 $1$ 两种.现在给出 $m$ 个限制条件,第 $i$ 个限制条件给出 $x_i$ .$y_i$ ,要求至少满足以下两个条件之一: 序列的 ...

最新文章

  1. 虚拟桌面的备份恢复最佳实践 第一部分
  2. 喜欢绘画学的计算机,为什么有的人画画非常好却对计算机一窍不通
  3. LINQ to SQL 在 Visual Studio 2008 中的简单应用
  4. python信用卡违约_Python数据分析及可视化实例之银行信用卡违约预测(24)
  5. 数据库中如何判断某参数为空就不执行where条件
  6. CSS3边框图片-像素虚边的问题
  7. MongoDB简介与入门
  8. Candy Box (easy version)
  9. HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-ISAPI-4.0_32bit”在其模块...
  10. 提示错误:“应为“providerInvariantName”参数的非空字符串。”
  11. git+pylint实现python提交代码格式校验
  12. 管理信息系统第一次作业
  13. IOS 文件目录的获取与操作
  14. 仿京东商城源码java_Java+SSM实现类似京东的3C电子商城系统
  15. 三国志战略版鸿蒙梦魇,三国志战略版梦中弑臣厉害吗 梦中弑臣战法搭配
  16. 未来可能的安全焦点:GIS地理信息系统安全问题分析
  17. 银河麒麟系统安装失败
  18. 云画册php,神策指标设计及埋点方案介绍
  19. 仿人民日报客户端app报纸版面-Android
  20. 想要好身材,你不得不看的高蛋白饮食计划

热门文章

  1. linux http 分析工具,技术|httpstat:一个检查网站性能的 curl 统计分析工具
  2. 二叉排序树与文件操作的设计与实现_堆排序就这么简单
  3. 增长率不用计算机,事业单位行测:这类资料分析题根本不用计算
  4. json 查询 java_怎样在java中查询mysql得到如下的json格式的结果?
  5. 机器人等级考试一级教具_全国青少年机器人技术等级考试(一级):基本结构...
  6. c语言编程每日一练教程,每日一练 | C语言之指针
  7. php mysql 云虚拟机_虚拟机+apache+php+mysql 环境安装配置
  8. python2中的unicode_在python 3和2中工作的Unicode文字
  9. 队列的基础概念与经典题目(Leetcode题解-Python语言)
  10. 「软件项目管理」一文详解软件配置管理计划