思路:这就是一个斐波那契数列,只不过每次循环求f[i]的时候都要求余m。f[i]就是第i个月兔子的数量。而这个月最后一队兔子的编号就是(f[n]+m-1)%m。
#include <bits/stdc++.h>
using namespace std;
int f[1005];
int main()
{
int t; cin>>t;
while(t--){
int n,m; cin>>n>>m;
f[1] = 1;f[2] = 1;
for(int i=3;i<=n;i++){
f[i] = (f[i-1]+f[i-2])%m;
}
cout<<(f[n]+m-1)%m<<endl;
}
return 0;
}