ZZULIOJ-1525-小P找座位

版权声明:IT交流QQ群328880248,欢迎大家来一起学习一起交流~本篇文章未经同意请勿转载! https://blog.csdn.net/m0_38072683/article/details/88092403

问题 I: 小P找座位

时间限制: 1 Sec  内存限制: 128 MB
提交: 1  解决: 1
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

终于到达考场的小P忘了自己坐在那里了,但他想起自己的座位号是第K个bofinacci数
马上就要考试了,请你帮助他求出他的座位号
设bi表示第i个bofinacci数,则b1=b2=1,对于i≥3有bi=(b2i−2+bi−1∗(i−1))%i

输入

一个整数K (K≤1000000)

输出

一个整数表示小P的座位号

样例输入 Copy

3

样例输出 Copy

0

思路

对于这个题服了,应该是我太菜了,第一次提交错了就算了,我以为是递推退错了,后来修改一下,还不行。

最后想想应该是int太小了把类型改为 long long 就行了。

代码

#include<cstdio>

using namespace std;
typedef long long ll;

int main(){
	ll k;
	scanf("%lld", &k);
	ll b1 = 1, b2 =1;
	ll b3 = 0;
	if(k == 1 || k == 2){
		printf("1\n");
		return 0;
	}
	for (ll i = 3; i <= k; i++){
		b3 = (b1*b1 + b2*(i-1))%i;
		b1 = b2;
		b2 = b3;
	}
	printf("%lld\n",b3);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_38072683/article/details/88092403