symons

___________每一天都是幸福的!!

  博客园  ::  :: 新随笔  ::  :: 订阅 订阅  :: 管理
 1 #include <stdio.h>
 2 int num[1000000+10];
 3 int main(){
 4     int l,m;
 5     int i,j;
 6     int sign;
 7     num[0]=1;
 8     num[1]=2;
 9     while(~scanf("%d%d",&l,&m)){
10         sign=1;
11         for(i=2;i<=l;++i){
12             if(sign==1){
13                 num[i]=num[i-2]+num[i-1]+1;
14             }else if(sign==2){
15                 num[i]=num[i-2]+num[i-1];
16             }else if(sign==3){
17                 if(num[i-2]+num[i-1]==0) 
18                 num[i]=m-1;
19                 if(num[i-2]+num[i-1]!=0)
20                     num[i]=num[i-2]+num[i-1]-1;
21             }else if(sign==0){
22                 num[i]=num[i-2]+num[i-1];
23             }
24             num[i]=num[i]%m;
25             sign=sign+1;
26             sign=sign%4;
27         }
28         printf("%d\n",num[l]%m);
29     }
30     return 0;
31 }

--------------------------------------------------------------------------

fmf  ==> 101 ==> 5    fff ==> 111 ==> 7

--------------------------------------------------------------------------

cnt =0

from i <--1 to n

    t <-- i

    while( t != 0 )

      if ( t mod 8==5 || t mod 8==7 )  { cnt ++; break; }

    t=t/2

--------------------------------------------------------------------------   

      | |

      | |

      | |

   list  

i=0,cnt=1
i=1,cnt=2
i=2,cnt=4
i=3,cnt=6
i=4,cnt=9
i=5,cnt=15
i=6,cnt=25
i=7,cnt=40
i=8,cnt=64
i=9,cnt=104
i=10,cnt=169
i=11,cnt=273
i=12,cnt=441
i=13,cnt=714
i=14,cnt=1156
i=15,cnt=1870
i=16,cnt=3025
i=17,cnt=4895
i=18,cnt=7921
i=19,cnt=12816
i=20,cnt=20736
i=21,cnt=33552
i=22,cnt=54289
i=23,cnt=87841
i=24,cnt=142129
i=25,cnt=229970
i=26,cnt=372100
i=27,cnt=602070
i=28,cnt=974169
i=29,cnt=1576239
i=30,cnt=2550409

 

 

posted on 2013-09-21 03:17  symons  阅读(182)  评论(0编辑  收藏  举报