【问题描述】
求所有可以只用1和00拼成的长度为N的二进制数的个数除以15746的余数。
比如当N=4的时候,有5个可能的二进制数:0011,0000,1001,1100,1111。
【输入格式】
第一行一个正整数N。
【输出格式】
输出所有可以只用1和00拼成的长度为N的二进制数的个数除以15746的余数。
【输入样例】
4
【输出样例】
5
【数据范围】
1≤N≤1000000
#include<iostream>
#include<map>
using namespace std;
const int mod = 15746;
int n,res;
//15746 11110110000010
//n = 1 1 1种
//n = 2 00 11 2种
//n = 3 001 100 111 3种
//n = 4 1001 1100 0011 1111 0000 5种
//n = 5 11001 11100 10011 11111 10000 00111 00001 00100 8种
int main(){
freopen("binary.in","r",stdin);
freopen("binary.out","w",stdout);
cin>>n;
int f1 = 1;
int f2 = 2;
for(int i = 3; i <= n; i++){
int t = f2;
f2 = (f1+f2)%mod;
f1 = t;
}
cout<<f2;
return 0;
}