小编Ale*_*XPO的帖子

在O(logn)中找到第n个fib数

我试图解决这个问题:SPOJ问题.

经过一些研究,我发现它归结为第n个纤维数的简单计算,但是n可以变得非常大,因此O(n)解决方案不会有任何好处.谷歌搜索我发现你可以计算O(logn)中的第n个fib数,也可以计算出完全相同的代码示例:

long long fibonacci(int n)
{
    long long fib[2][2]= {{1,1},{1,0}},ret[2][2]= {{1,0},{0,1}},tmp[2][2]= {{0,0},{0,0}};
    int i,j,k;
    while(n)
    {
        if(n&1)
        {
            memset(tmp,0,sizeof tmp);
            for(i=0; i<2; i++) for(j=0; j<2; j++) for(k=0; k<2; k++)
                        tmp[i][j]=(tmp[i][j]+ret[i][k]*fib[k][j]);
            for(i=0; i<2; i++) for(j=0; j<2; j++) ret[i][j]=tmp[i][j];
        }
        memset(tmp,0,sizeof tmp);
        for(i=0; i<2; i++) for(j=0; j<2; j++) for(k=0; k<2; k++)
                    tmp[i][j]=(tmp[i][j]+fib[i][k]*fib[k][j]);
        for(i=0; i<2; i++) for(j=0; j<2; j++) fib[i][j]=tmp[i][j];
        n/=2;
    }
    return (ret[0][1]);
}
Run Code Online (Sandbox Code Playgroud)

我试图修改它以解决问题,我仍然得到WA:http://ideone.com/3TtE5m

我计算模运算错了吗?或者是其他问题?

c fibonacci

4
推荐指数
2
解决办法
211
查看次数

如何在 JavaFX 中从我自己的线程显示新舞台?

我必须在另一个线程中运行一些任务,当该线程run()方法中满足某些条件时,我必须显示一个带有图片的弹出窗口,但是尝试这样做会导致一个异常,告诉我我不能在主 UI 线程之外创建任何阶段,现在有没有办法解决这个问题,我可以以某种方式从我的自定义线程访问 UI 线程并让它显示阶段吗?(注意:由于应用程序的性质,我必须使用自定义线程来检查条件,因为有 8 个不同的线程同时检查相同的条件。)

例外:

Exception in thread "Thread-4" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-4
Run Code Online (Sandbox Code Playgroud)

java multithreading javafx

1
推荐指数
1
解决办法
1464
查看次数

标签 统计

c ×1

fibonacci ×1

java ×1

javafx ×1

multithreading ×1