#6475: O(1) 演算法


xavier13540 (柊 四千)


不曉得有沒有人和我一樣發現本題答案每 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)


不曉得有沒有人和我一樣發現本題答案每 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_小馬)


不曉得有沒有人和我一樣發現本題答案每 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~~~~~興國猩國也(絕對沒有在污辱女性))


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


a450 (要学会宽容)


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


a127000555 (OAO)


不曉得有沒有人和我一樣發現本題答案每 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)


不曉得有沒有人和我一樣發現本題答案每 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;
}