-
斐波那契数列 二分法 取后四位 PKU 3070
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
#include <iostream>
using namespace std;
int ans[2][2];
int mid[2][2];
void init( int a[2][2], int b[2][2], int mark )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
int i, j, temp[2][2];
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
temp[0][0] = ( a[0][0] * b[0][0] + a[0][1] * b[1][0] ) % 10000;
temp[0][1] = ( a[0][0] * b[0][1] + a[0][1] * b[1][1] ) % 10000;
temp[1][0] = ( a[1][0] * b[0][0] + a[1][1] * b[1][0] ) % 10000;
temp[1][1] = ( a[1][0] * b[0][1] + a[1][1] * b[1][1] ) % 10000;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if ( mark == 1)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
for ( i = 0; i < 2; i++ )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
for ( j = 0; j < 2; j++ )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ans[i][j] = temp[i][j];
}
}
}
if ( mark == 0 )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
for ( i = 0; i < 2; i++ )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
for ( j = 0; j < 2; j++ )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
mid[i][j] = temp[i][j];
}
}
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
void cal ( int n )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
while ( n )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if( n % 2 == 1 )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
init ( ans, mid, 1 );
}
init ( mid, mid, 0 );
n /= 2;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int main ()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
int n;
while ( scanf ( "%d", &n ) && n != -1 )
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ans[0][0] = 1; ans[0][1] = 0; ans[1][0] = 0; ans[1][1] = 1;
mid[0][0] = 1; mid[0][1] = 1; mid[1][0] = 1; mid[1][1] = 0;
cal (n);
printf ( "%d\n", ans[0][1] );
}
return 0;
}
-
相关阅读:
c++运算符重载
c++ const_cast
SHL
C++拷贝构造函数(深拷贝,浅拷贝)
ps命令详解
static 修饰符
“宝洁八大问”整理篇
linux grep命令
C++操作符重载
linux中删除指定日期之前的文件
-
原文地址:https://www.cnblogs.com/Knuth/p/1559841.html
Copyright © 2020-2023
润新知