#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
while(cin>>n>>x)
{
if(n>0)
{
long long int a=pow(2,x);
long long int fn[n];
fn[0]=1;
fn[1]=1;
for(int i=2;i<n;i++)
fn[i]=fn[i-1]+fn[i-2] ;
cout<<fn[n-1]%a<<endl;
}
}
}
請教一下
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
while(cin>>n>>x)
{
if(n>0)
{
long long int a=pow(2,x);
long long int fn[n];
fn[0]=1;
fn[1]=1;
for(int i=2;i<n;i++)
fn[i]=fn[i-1]+fn[i-2] ;
cout<<fn[n-1]%a<<endl;
}
}
}
請教一下
n最大可能到2147483647,宣告這麼大的陣列會RE(而且就算不RE還是會TLE)
這題應該是矩陣快速冪(不會的話去查一下)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x;
while(cin>>n>>x)
{
if(n>0)
{
long long int a=pow(2,x);
long long int fn[n];
fn[0]=1;
fn[1]=1;
for(int i=2;i<n;i++)
fn[i]=fn[i-1]+fn[i-2] ;
cout<<fn[n-1]%a<<endl;
}
}
}
請教一下
n最大可能到2147483647,宣告這麼大的陣列會RE(而且就算不RE還是會TLE)
這題應該是矩陣快速冪(不會的話去查一下)
我知道了,不果目前能力不足,查了也看不懂,等我能力提升以後再回來解這題好了。