SSL 1162 完全平方數 數論

2021-08-17 19:02:30 字數 1273 閱讀 4969

目錄

****2

求出不小於

n n

的所有完全平方數,

n<=

2000000000

' role="presentation" style="position: relative;">n

<=

2000000000

n<=

2000000000

自然,樸素的求法是直接一到n列舉,自然,這樣的時間複雜度是o(

n)o (n

),肯定超時。

用平方的方法優化一下,可將時間複雜度降至o(

n−−√

) o(n

),也就是看算到**的時候i的平方會超過n時停止。

完全平方數可以組成有規律的序列,例如 1,

4,9,

16,25,

36,49,

64,81…

1 ,4

,9,16

,25,36

,49,64

,81

…可以發現這個序列相當於 1,

1+3,

1+3+

5,1+

3+5+

7,1+

3+5+

7+9,

1+3+

5+7+

11…1 ,1

+3,1

+3+5

,1+3

+5+7

,1+3

+5+7

+9,1

+3+5

+7+11

…所以說,用這種規律去計算,時間複雜度為o(

n−−√

) o(n

)。

有人會問:這樣時間複雜度不是一樣嗎?有什麼不一樣呢?

答:因為c++中的加法運算比乘法運算要快得多,所以演算法三的時間複雜度是優於演算法二的。

#include

using

namespace

std;

void write(int x)//輸出流可以將**從45ms優化至15ms

int main()

if(i%10==9) //這兩個是換行處理,不是**核心

putchar(32);//空格

}}

#include

using

namespace

std;

void write(int x)

int main()

}

完全平方數

完全平方數 time limit 10000ms memory limit 65536k total submit 44 accepted 42 case time limit 1000ms description 由1 9九個數字組成的全排列可以被看作是乙個九位數,程式設計求出這些九位數中第n個完...

完全平方數

coding utf8 python3 題目 完全平方數 乙個整數,它加上100和加上268後都是乙個完全平方數 求該數是多少 數字 1,1000 中,符合條件的數 python sqrt num.py b 1 e 1000 import sys,getopt import math defint ...

完全平方數

程式設計判斷乙個非負整數是否為完全平方數。乙個非負整數n是完全平方數當且僅當存在非負整數m,使得n m2n m 2n m2。要求如下 輸出1表示是完全平方數,輸出0表示不是。比如,輸入非負整數0時,應輸出1。不能有其他多餘的cin和cout語句。注 0是完全平方數 include using nam...