對於這道題,我還是先附上大佬的**,我覺著大佬的比較容易理解!
#include
using namespace std;
#define ll long long
struct mt
;mt t
(mt a,mt b,ll mod)}}
return res;
}mt power
(mt a,ll b,ll mod)
} res.a[0]
[0]=res.a[1]
[1]=res.a[2]
[2]=
1;while
(b)return res;
}ll feb
(ll n,ll mod)
} temp.a[0]
[1]=temp.a[1]
[1]=temp.a[1]
[0]=
1;mt res=
power
(temp,n-
1,mod)
;return
(res.a[0]
[0]+res.a[0]
[1])
%mod;
}ll feb2
(ll n,ll mod)
} temp.a[0]
[0]=temp.a[0]
[1]=temp.a[0]
[2]=temp.a[1]
[0]=temp.a[2]
[2]=
1;mt res=
power
(temp,n,mod)
;return
(res.a[0]
[2])
%mod;
}ll power
(ll a,ll b,ll mod)
return res;
}int
main()
if(n==2)
if(x%m==
0||y%m==
0||a%m==0)
a=power
(a%m,b,m)
;//這裡要注意a對m取模
cout<<
power
(x,feb
(n-2
,m-1
),m)
*power
(y,feb
(n-1
,m-1
),m)
%m*power
(a%m,
feb2
(n-2
,m-1
),m)
%m<
}
以下是我的**!
#include
#include
using namespace std;
#define ll long long
const ll mod=
1e9+7;
struct mat
;mat powmat
(ll a[
2],ll b[
2])}
for(
int i=
0;i<
2;i++)}
}return c;
}ll pow
(ll a[
2],ll n)
}for
(int i=
0;i<
2;i++)}
while
(n) res =
powmat
(res.l,res.l)
; n = n >>1;
}return ans.l[0]
[0];
}ll poww
(ll a,ll b)
res = res % mod * res % mod ;
b = b >>1;
}return ans;
}int
main()
if(n ==1)
if( n ==2)
ll t =
poww
(a,b)
; e[0]
[0]=
1; e[0]
[1]=
1;e[1]
[0]=
1; e[1]
[1]=
0;ll p =
pow(e,n-3)
% mod;
ll q =
pow(e,n-2)
% mod;
ll j =
(p + q -1)
;printf
("%lld"
,poww
(x,p)
% mod *
poww
(y,q)
% mod *
poww
(t,j)
% mod)
;return0;
}
十人看了九人得道
一 人之所以痛苦,在於追求錯誤的東西。二 與其說是別人讓你痛苦,不如說自己的修養不夠。三 如果你不給自己煩惱,別人也永遠不可能給你煩惱。因為你自己的內心,你放不下。四 好好的管教你自己,不要管別人。五 不寬恕眾生,不原諒眾生,是苦了你自己。六 別說別人可憐,自己更可憐,自己修行又如何?自己又懂得人生...
都市人飲食九大惡習
一 不吃早餐害處多 雖然很多人不吃早餐,但這種做法很有害。在一天的開始吃一頓健康的早餐,不僅讓你精力充沛,也會幫你對一整天的飲食作出健康的選擇。吃早餐可以幫助你在一天的剩餘時間裡攝入更少的熱量。如果早餐吃得足夠好,在吃中餐時做出壞選擇的可能性就小了。早餐時可以喝一碗麥片和一杯低脂肪酸乳酪,或者吃個荷...
九度 和為S的連續正數序列
題目1354 和為s的連續正數序列 時間限制 2 秒 記憶體限制 32 兆 特殊判題 否 提交 2008 解決 622 題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9 16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100 至少包括...