HDU 1021(斐波那契数与因子3 **)

题意是说在给定的一种满足每一项等于前两项之和的数列中,判断第 n 项的数字是否为 3 的倍数。

斐波那契数在到第四十多位的时候就会超出 int 存储范围,但是题目问的是是否为 3 的倍数,也就是模 3 值为 0 ,考虑到余数只有0,1,2,而且每项由前两项求和得到,也就是说余数一定会出现循环的规律,从首项开始,前 8 项模 3 的结果是:1 2 0 2 2 1 0 1,接下来的两项模 3 的结果仍是 1 2 ,那么整个序列就呈现出以 8 为周期的特点,只要模 8 的结果为 3 或者 7 就输出 yes,否则输出 no,注意序列是从第 0 项开始的,所以 n 每次都要减掉 1.

 1 #include <cstdio>
 2 int main()
 3 {
 4     int n;
 5     while(~scanf("%d",&n))
 6     {
 7 //        if(n == 0 || n == 1) puts("no");
 8 //        else
 9 //        {
10 //            n -= 2;
11 //            if(n % 4 == 0) puts("yes");
12 //            else puts("no");
13 //        }
14         n++;
15         if(n%8 == 3 || n%8 == 7) puts("yes");
16         else puts("no");
17     }
18     return 0;
19 }

原文地址:https://www.cnblogs.com/Taskr212/p/9498566.html

时间: 2024-10-12 09:24:27

HDU 1021(斐波那契数与因子3 **)的相关文章

hdu 1021 斐波那契2,找规律

背景:暴力必定超数据结构范围,因为斐波那契类型数列,成指数形式爆炸增长.故写了数据发现取余30不影响结果. 学习:1.数论类题可以写出几组数据找规律,猜结论. 我的代码: #include<stdio.h> int str[1000009] = { 7, 11 }; int main() { int n; for (int i = 2; i <=1000000; i++){ str[i] = (str[i - 1] + str[i - 2])% 30; } while (scanf(&q

hdu 4893 Wow! Such Sequence!(线段树功能:单点更新,区间更新相邻较小斐波那契数)

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4893 --------------------------------------------------------------------------------------------------------------------------------------------

hdu 1316 How many Fibs?(高精度斐波那契数)

//  大数继续 Problem Description Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1 + fn-2 (n >= 3) Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a, b]. Input The input contains several test cas

HDU 5914 Triangle(打表——斐波那契数的应用)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Problem Description Mr. Frog has n sticks, whose lengths are 1,2, 3?n respectively. Wallice is a bad man, so he does not want Mr. Frog to form a triangle with three of the sticks here. He decides t

(hdu step 2.2.1)Fibonacci(求当n很大时的斐波那契数)

题目: Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3036 Accepted Submission(s): 1397   Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i] =

hdu1316(大数的斐波那契数)

题目信息:求两个大数之间的斐波那契数的个数(C++/JAVA) http://acm.hdu.edu.cn/showproblem.php?pid=1316 这里给出java代码和c++代码 C++:AC代码 #include<iostream> #include<string> using namespace std; string add(string s1,string s2){//字符串模拟大数加法 string s; int len1,len2; len1=s1.size

HDU 1316 斐波那契数列+高精度

How Many Fibs? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4235    Accepted Submission(s): 1669 Problem Description Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1

hdu1568&amp;&amp;hdu3117 求斐波那契数前四位和后四位

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 题意:如标题所示,求斐波那契数前四位,不足四位直接输出答案 斐波那契数列通式: 当n<=20的时候,不足四位,所以直接打表. 当n>20的时候,大于四位的时候,ans满足这个公式:ans=-0.5*log10(5.0)+num*1.0*log10((1+sqrt(5.0))/2.0); 这个公式是怎么来的呢?我们可以对an取10的对数,根据对数的性质. log10(ans)=log10(1/

斐波纳契数之组合

斐波纳契数之组合 Time Limit: 1000 MS Memory Limit: 65535 K Total Submit: 145(66 users) Total Accepted: 83(65 users) Rating: Special Judge: No Description 斐波那契数列是这么定义的:F0 = 1, F1 = 1, F2 = F1 + F0,··· Fn = Fn-1 + Fn-2(n>=2),对于每一项,它们都是斐波那契数. 现在给出一个整数d,求一个组合使得a