本来想作为水题刷,很快就想出了做法,结果细节实现太差改了好久... 根据题意你会发现其实就是求方程 ax+by=k解的个数. 此时 a=f[i],b=f[i+1],而(x,y)就是你要求的数对. 于是你就对斐波那契的每一项进行扩展欧几里得,然后计算个数,注意向上取整!!! 此时你把y转换为最大值应该是一个y≡n+a*t 而a可以为0,所以要加一. #include<bits/stdc++.h> using namespace std; long long f[100]; void exgcd(…