求助30分
查看原帖
求助30分
918152
yizhidashayu楼主2023/9/30 20:22

如果预处理就把斐波那契数列%m就可以,但是换成每一次都%m就不行了,感谢大佬

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int MAX = 1e8+10;

int fib[MAX];

int main(){
	int m;
	scanf("%d",&m);
	
	fib[1] = 1;
	fib[2] = 1;
	for(int i = 3; i <= MAX; i++){
		fib[i] = (fib[i-1] + fib[i-2]);
	}
	
	for(int i = 1; i <= MAX; i++){
		if((fib[i] % m) == 0 && (fib[i+1] % m) == 1){
			printf("%d",i);
			return 0;
		}
	}
	return 0;
}
2023/9/30 20:22
加载中...