C 數論 數列

2021-09-17 20:21:56 字數 2103 閱讀 9344

描述

當然是這個辣

你得學會高精度數除以低精度數,當然,能用壓位高精最好(親測極限資料壓位高精慢了整整7ms!!!)

俗話說得好,數學上來先打表,於是:

1. 1

2. 12

3. 121

4. 1213

5. 12131

6. 121312

7. 1213121

8. 12131214

9. 121312141

10. 1213121412

11. 12131214121

12. 121312141213

13. 1213121412131

14. 12131214121312

15. 121312141213121

16. 1213121412131215

17. 12131214121312151

18. 121312141213121512

19. 1213121412131215121

20. 12131214121312151213

統計成**,可得:

s eq

iseq_i

seqi

​對應的iii1

1,3,5,7,9,11,13,15,17,19

22,6,10,14,18

34,12,2048

516然後,我們σ( ° △ °||| 震驚的發現了,在每個i

ii的質因數分解中,若i=2

k∗n,

(k,n

∈n

)i=2^k*n,(k,n\in\mathbb)

i=2k∗n

,(k,

n∈n)

,那麼seq

i=k+

1seq_i=k+1

seqi​=

k+1。

於是,在dou

bl

edouble

double

範圍內,我們是可以用cma

th

cmath

cmat

h的函式log

⁡\log

log來求解。但是這個題的範圍大概是double_max^3,所以我們可以用long double高精來解決問題。

就相當於手動模擬一遍log

⁡\log

log的過程,停止的條件是n

nn為奇數(這個時候就不能再除以2了),時間複雜度o

(log⁡n

lg⁡n)

o(\log n\lg n)

o(lognlgn

),可以輕鬆通過本題……

#include

#include

#include

using

namespace std;

#define reg register

struct bignum

inline bignum&

operator=(

const

int&x)

inline

bignum()

inline

bignum

(const

char

*s)inline

bignum

(const

int&x)

inline

void

input()

inline

void

output()

inline bignum operator/(

const

int&x)

const

while

(!ans.a[ans.a[0]

]) ans.a[0]

--;return ans;

}inline

bool

even_number()

}n;//可以省略的高精板子

int x;

inline

void

solve()

intmain()

波動數列 數論推導,dp

題目鏈結 觀察這個數列 1 3 0 2 1 1 2 這個數列中後一項總是比前一項增加2或者減少3,且每一項都為整數。棟棟對這種數列很好奇,他想知道長度為 n 和為 s 而且後一項總是比前一項增加 a 或者減少 b 的整數數列可能有多少種呢?共一行,包含四個整數 n,s,a,b,含義如前面所述。共一行...

數論 洛谷 P1062 數列

給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,3 1,3 0 3 1,3 2,3 0 3 2,3 1 3 2,3 0 3 1 3 2,請你求出這個序列的第n...

數論出題組比賽用題 數列

思考難度 提高?難度 提高?演算法0 暴力 實際得分 0 演算法1 考慮x y 1x y 1x y 1的情況,顯然有an an 1 an 2a n a a an an 1 an 2 廢話 故 an an 1a n times a an an 1 an an an 1 a n times a n a ...