哈理工OJ 1151 追求(斐波那契变形【思维题目】)
題目鏈接:
http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1151
追求
Time Limit: 1000 MS Memory Limit: 65536 K
Total Submit: 241(62 users) Total Accepted: 55(48 users) Rating: Special Judge: No
Description
經(jīng)歷了那晚的竹林深處相識(shí)后靜竹對(duì)數(shù)學(xué)念念不忘,產(chǎn)生了好感!為了追求數(shù)學(xué),她想到了一招,要想搞定女友,搞定閨中密友。于是,她秘密與數(shù)學(xué)的好友斐波那契見面了。學(xué)數(shù)學(xué)的真是不一樣,斐波那契的出現(xiàn)前提也是需要解決一道題目,你能幫助靜竹同學(xué)嗎?
斐波那契發(fā)明了一種數(shù),他的規(guī)律就是F(n)=F(n-1)+F(n-2),其中F(0)=K,F(1)=Q
求第n項(xiàng)的值已經(jīng)很簡(jiǎn)單了,現(xiàn)在的問題是需要你求出第n項(xiàng)的值對(duì)應(yīng)的數(shù)有多少個(gè)不大于n的正整數(shù)因子
Input
有多組測(cè)試數(shù)據(jù)
每組測(cè)試數(shù)據(jù)中,第一行輸入三個(gè)整數(shù),K,Q,T(0<=K, Q, T<1000,)
接下來有T行,每行輸入一個(gè)整數(shù)n(0<=n<1000)
處理到文件結(jié)束
Output
按照樣例輸出要求輸出,首先Case k:,k表示第k組測(cè)試數(shù)據(jù)
接下來輸出T行,每行輸出一個(gè)整數(shù)代表當(dāng)前行輸入的數(shù)n的F(n)值不大于n的正整數(shù)因子數(shù)目。
Sample Input
1 1 2
2
3
Sample Output
Case 1:
2
2
Author
萬祥
下面分析一下本題:
直接暴力能不能行呢?答案是肯定的。肯定不行的,為什么,因?yàn)榈?000個(gè)斐波那契數(shù)會(huì)爆了long long 然后這個(gè)題就掛掉了,然后我們只能苦逼的拿時(shí)間來換了,每次新求一個(gè)斐波那契數(shù),然后再暴力一下就OK了,其實(shí)這個(gè)題可以優(yōu)化的,以前爆過的不需要再爆了,交了一發(fā)過了,優(yōu)化的就先不寫了。
下面是AC代碼:
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; #define ll long longint a[1005];int main() {int k,q,t;int iCase=0;while(~scanf("%d%d%d",&k,&q,&t)){a[0]=k;a[1]=q;iCase++;int n;printf("Case %d:\n",iCase);while(t--){scanf("%d",&n);int ans=0;if(n==0){printf("0\n");continue;}else if(n==1){printf("1\n");continue;}for(int i=1;i<=n;i++){for(int j=2;j<=n;j++){a[j]=(a[j-1]%i+a[j-2]%i)%i;}if(a[n]%i==0){ans++;}}printf("%d\n",ans);}}return 0; }總結(jié)
以上是生活随笔為你收集整理的哈理工OJ 1151 追求(斐波那契变形【思维题目】)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几个前端面试问题
- 下一篇: 用什么软件可以检测苹果耳机芯片_苹果现在