突然常務に、
定理の適用例を与えないといけないのですが桁数が大きすぎて手計算で確認無理!!
U_n=0,U_1=1,U_n=PU_{n-1}-QU_{n-2}
でPとQを変えると数列が変わるのですが、PとQを指定してその数列の第何項目ってのが知りたいのが一つ目です
次が、ある数aをnで割ったときの余りを計算したいのです。
とか言われて、数列の計算はともかく割り算はなんでだと思っていたら、
nはそんなでもないと思うのですがaはとりあえず日本語では読めないくらいにはなるかなぁ
と言われてウイスキーを吹いたのが昨日の話。
とりあえずdoubleで計算してみたが、307桁まで扱えたところで所詮有効桁数15桁。確認例として提示されたP=1,Q=-1,n=100の354224848179261915075すら計算できません。
3垓程度ならlong long intに収まるけれどコンパイラに依存するし、おとなしく桁分割するか思っていたところ、
結局欲しいのが、(P,Q)=(3,5)のときだと550項目と552項目を551で割った余りが欲しいだけなので
数列を逐次あまりに置き換えて計算するとかどうでしょう?
と妥協案が出たので対応。
どうやら期待する値はとれた模様。
流石に余だけの計算ならn=41356154とかわけわかんない数字を提示されても一瞬で計算できるもんですね。周波数の暴力というか。