A
B
转换枚举对象!!!
刚开始我的做法是枚举前两个数字,这个很容易想到,但是那个时间复杂度过不去,三次循环说实在的有点多了,这时候应该想到去转换枚举对象,虽然k是1e9,但是我们可以看出来,如果是22的话已经是第四次了,1e5根本是达不到1e9的次数的,所以说时间复杂度上是可以过去的
好题!:
#include<bits/stdc++.h>
using namespace std;
int t,n,k;
signed main()
{
scanf("%d",&t);
while(t--)
{
int ans=0;
scanf("%d%d",&n,&k);
for(int i=0;i<=n;i++)
{
int x=n,y=i;
for(int j=k-2;j;j--)
{
int z=x-y;
if(z<0||z>min(x,y))break;
if(j==1)ans++;
x=y,y=z;
}
cout << endl;
}
printf("%d\n",ans);
}
return 0;
}
c题目:
看到一个大神连第一个题目都没有做出来,其实这个是需要过程的,都是这样慢慢过来的,见得多了,看的多了,自然而然就会了,这个题目真的太妙了,首先请观察这个过程,