心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
Fibonacci数列一定会从F[0]、F[1]开始循环,这是JJ哥告诉我的……
于是,此题就很显然啦。
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
以下是我的代码:
#include <vector>
#include 
<cstdio>
using namespace std;

int n, m;
vector
<int> r[27];

void Init () {
    
for ( m = 1; m < 20; m++ ) {
        
int mod = ( 1 << m );
        
int a = 0, b = 1, c = 1 % mod;
        r[m].push_back ( a );
        r[m].push_back ( b );
        r[m].push_back ( c );
        
while ( b != 0 || c != 1 ) {
            a 
= b; b = c; c = ( a + b ) % mod;
            r[m].push_back ( c );
        }
        r[m].pop_back(); r[m].pop_back();
    }
}

int main () {
#ifndef ONLINE_JUDGE
    freopen ( 
"data.in""r", stdin );
#endif
    Init ();
    
while ( scanf ( "%d%d"&n, &m ) == 2 )
        
if ( m ) printf ( "%d\n", r[m][n%r[m].size()] );
        
else printf ( "%d\n"0 );
    
return 0;
}
posted on 2011-11-22 22:57 lee1r 阅读(1002) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:数学/数论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理