题目
已知斐波那契数列有如下递归定义:f1 = 1,f2 = 1,且对于n >= 3,有fn = fn-1 + fn-2,它的前几项可以表示为1, 1,2 ,3 ,5 ,8,13,21,34…问fn的值是否能被 3 和 4 整除?
输入
输入数据有若干组,每组数据包涵一个整数 n (1 < n < 1000000000)
输出
对应每组数据 n,若fn能被 3 整除,则输出“3”;若能被 4 整除,则输出“4”;如果能被 12 整除,则输出“YES”,否则输出“NO”
输入样例
4
6
7
输出样例
3
4
NO
AC代码
#include <iostream> using namespace std; int main() { int n; while (cin >> n) { if (n % 12 == 0) puts("YES"); else { if (n % 4 == 0) puts("3"); else if (n % 6 == 0) puts("4"); else puts("NO"); } } return 0; }
总结
fn能被 3 整除,当且仅当 n 可以被 4 整除;fn能被 4 整除,当且仅当 n 可以被 6 整除;fn能被 12 整除,当且仅当 n 可以被 12 整除(4 和 6 的最小公倍数)