C++的题目如下:
然后我看到一个大佬的代码是这样的,很简洁很神奇,但是我看了很久始终没搞懂为什么。
大佬代码如下:
#include <iostream>
using namespace std;
int k,n,i=1,j=1,l=1;
long long q[1001]={0,1};
inline long long min(long long a,long long b){return a<b?a:b;}
int main(){
cin>>k>>n;
while(l<n){
long long a=q[i]*k,b=q[j]*k+1;//1 = 3^0
q[++l]=min(a,b);
if(q[l]==a)i++;
if(q[l]==b)j++;
}
cout<<q[n]<<endl;
}
有没有老师能解释一下为什么!谢谢啦