#6475: O(1) 演算法


xavier13540 (柊 四千)

學校 : 國立臺灣大學
編號 : 21783
來源 : [36.230.29.43]
最後登入時間 :
2024-07-06 14:41:17
a272. 猥瑣罐頭下樓梯 | From: [163.27.3.67] | 發表日期 : 2012-03-15 16:01

不曉得有沒有人和我一樣發現本題答案每 20016 個就會發生一循環 XD
Code 如下:
 
#include<stdio.h>
int f[20016];
int main(){
    int n,i;
    f[0]=1;f[1]=1;
    for(i=2;i<20016;i++)f[i]=(f[i-1]+f[i-2])%10007;
    while(scanf("%d",&n)==1)printf("%d\n",f[n%20016]);
    return 0;
}
 
當然無論如何還是 O(log n) 的演算法比較快。 
           2 
 
 
#6476: Re:O(1) 演算法


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
a272. 猥瑣罐頭下樓梯 | From: [203.72.178.252] | 發表日期 : 2012-03-16 14:47

不曉得有沒有人和我一樣發現本題答案每 20016 個就會發生一循環 XD
Code 如下:
 
#include
int f[20016];
int main(){
    int n,i;
    f[0]=1;f[1]=1;
    for(i=2;i<20016;i++)f[i]=(f[i-1]+f[i-2])%10007;
    while(scanf("%d",&n)==1)printf("%d\n",f[n%20016]);
    return 0;
}
 
當然無論如何還是 O(log n) 的演算法比較快。 
           2 
 


這種循環本來就是可預見的 ...

以前在類似題目也這樣ac過 XD

 

但是不實際 無法運用於所有題目

 

另外, O(1) 當然比O(log n)快 .. 

 
#6497: Re:O(1) 演算法


Nineguan (VAC+03_小馬)

學校 : 臺北市私立延平高級中學
編號 : 6679
來源 : [74.98.229.202]
最後登入時間 :
2020-04-10 11:59:36
a272. 猥瑣罐頭下樓梯 | From: [61.230.100.100] | 發表日期 : 2012-03-25 16:21

不曉得有沒有人和我一樣發現本題答案每 20016 個就會發生一循環 XD
Code 如下:
#include
int f[20016];
int main(){
    int n,i;
    f[0]=1;f[1]=1;
    for(i=2;i<20016;i++)f[i]=(f[i-1]+f[i-2])%10007;
    while(scanf("%d",&n)==1)printf("%d\n",f[n%20016]);
    return 0;
}
當然無論如何還是 O(log n) 的演算法比較快。 
           2 


去做2009NPSC高中組初賽pa"腹黑 傲嬌"

每一筆測資要mod的值 和 矩陣都不一樣

我看你們怎麼抓規律XD

正確還是用Q-matrix+二進位分析吧~O(lgn)

 
#8109: Re:O(1) 演算法


cuh127 (futurhack~~~~~興國猩國也(絕對沒有在污辱女性))

學校 : 臺南市私立興國高級中學
編號 : 28132
來源 : [203.68.26.150]
最後登入時間 :
2014-04-02 16:51:03
a272. 猥瑣罐頭下樓梯 | From: [118.233.187.216] | 發表日期 : 2013-08-18 15:39

高手請問一下 矩陣 y[2^64-1]是不是會爆掉?
那要怎麼開
 
#8126: Re:O(1) 演算法


a450 (要学会宽容)

學校 : 福建省福州第十九中学
編號 : 33926
來源 : [118.189.34.85]
最後登入時間 :
2016-04-05 21:29:33
a272. 猥瑣罐頭下樓梯 | From: [27.155.80.90] | 發表日期 : 2013-08-22 20:11

用动态规划么 求n  只需要求n-1 n-2 其它不用开了 一个temp 一个a 一个b
 
#8345: Re:O(1) 演算法


a127000555 (OAO)

學校 : 臺北市私立薇閣高級中學
編號 : 31134
來源 : [123.194.35.34]
最後登入時間 :
2024-11-23 12:28:30
a272. 猥瑣罐頭下樓梯 | From: [123.194.112.224] | 發表日期 : 2013-11-01 00:45

不曉得有沒有人和我一樣發現本題答案每 20016 個就會發生一循環 XD
Code 如下:
 
#include
int f[20016];
int main(){
    int n,i;
    f[0]=1;f[1]=1;
    for(i=2;i<20016;i++)f[i]=(f[i-1]+f[i-2])%10007;
    while(scanf("%d",&n)==1)printf("%d\n",f[n%20016]);
    return 0;
}
 
當然無論如何還是 O(log n) 的演算法比較快。 
           2 
 


這種循環本來就是可預見的 ...

以前在類似題目也這樣ac過 XD

 

 

但是不實際 無法運用於所有題目

 

另外, O(1) 當然比O(log n)快 .. 


那應該可以先跑一次找出規律後
再用mod吧?  
#8346: Re:O(1) 演算法


a127000555 (OAO)

學校 : 臺北市私立薇閣高級中學
編號 : 31134
來源 : [123.194.35.34]
最後登入時間 :
2024-11-23 12:28:30
a272. 猥瑣罐頭下樓梯 | From: [123.194.112.224] | 發表日期 : 2013-11-01 01:06

不曉得有沒有人和我一樣發現本題答案每 20016 個就會發生一循環 XD
Code 如下:
 
#include
int f[20016];
int main(){
    int n,i;
    f[0]=1;f[1]=1;
    for(i=2;i<20016;i++)f[i]=(f[i-1]+f[i-2])%10007;
    while(scanf("%d",&n)==1)printf("%d\n",f[n%20016]);
    return 0;
}
 
當然無論如何還是 O(log n) 的演算法比較快。 
           2 
 


這種循環本來就是可預見的 ...

以前在類似題目也這樣ac過 XD

 

 

但是不實際 無法運用於所有題目

 

另外, O(1) 當然比O(log n)快 .. 


那應該可以先跑一次找出規律後
再用mod吧?
code 如下:
 
#include<stdio.h>
int main(){int a,b,c,d;
while(scanf("%d",&a)!=EOF){
d=0;
b=1;
c=2;
 int i;
     int x[100000];
     x[1]=1;
     x[2]=2;
     for(i=3;;i++){
      x[i]=x[i-1]+x[i-2];
      x[i]=x[i]%10007;
if(x[i-1]==1 && x[i]==2)break; }
      a=a%(i-2);
for(i=1;i<a+1;i++){
if (i%3==2){d=c+b;
d=d%10007;}
if (i%3==0){b=c+d;
b=b%10007;}
if (i%3==1){c=d+b;
c=c%10007;}
} if(a%3==0)printf("%d\n",b);
if(a%3==1)printf("%d\n",c);
if(a%3==2)printf("%d\n",d);
} return 0;
}


 
ZeroJudge Forum