程式設計小技巧

2022-02-05 04:17:47 字數 1836 閱讀 9672

1.判斷乙個自然數是否是某個數的平方?(其實就是判斷這個數一定是奇數相加的)

由於(n+1)^2

=n^2 + 2n + 1,

= ...

= 1 + (2*1 + 1) + (2*2 + 1) + ... + (2*n + 1)

注意到這些項構成了等差數列(每項之間相差2)。

所以我們可以比較 n-1, n - 1 - 3, n - 1 - 3 - 5 ... 和0的關係。

如果大於0,則繼續減;如果等於0,則成功退出;如果小於 0,則失敗退出。

複雜度為o(n^0.5)。不過方法3中利用加減法替換掉了方法1中的乘法,所以速度會更快些。

例如:3^2 = 9 = 1 + 2*1+1 + 2*2+1 = 1 + 3 + 5

4^2 = 16 = 1 + 2*1 + 1 + 2*2+1  + 2*3+1

[cpp]view plain

copy

intsquare(

intn)    

if( n == 0 )        

//是某個數的平方  

return

1;    

else

//不是某個數的平方  

return

0;    

}    

2.如何判斷乙個元素的奇偶性?

[cpp]view plain

copy

//判斷元素的奇偶性

bool

iseven(

intdata)  

[html]view plain

copy

if((exponent & 0x1) == 1) //判斷是否為奇數  

3.判斷一字串是否是對稱的。

[cpp]view plain

copy

bool

issymmetrical(

char

*pbegin , 

char

*pend)  

return

true

;  }  

4.輸入乙個整數n,求從1到n這個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次。

[cpp]view plain

copy

intnumberof1(unsigned 

intn)  

return

number;  

}  int

numberof1between1andn(unsigned 

intn)  

實現**:

[cpp]view plain

copy

#include

using

namespace

std;  

intnumberof1(unsigned 

intn)  

return

number;  

}  void

numberof1between1andn(unsigned 

intn)  

intmain()  

5.判斷乙個數是否是素數。

[cpp]view plain

copy

bool

isprime(

intn)  

return

true

;  } 

程式設計小技巧

define conn x,y x y define tochar x x define tostring x x x y表示什麼?表示x連線y,舉例說 int n conn 123,456 結果就是n 123456 char str conn asdf adf 結果就是 str asdfadf 怎...

程式設計小技巧

1.如何通過輸入一組任意長度的數字序列?char inchar n int num n int i 0 int len 0 scanf s inchar len strlen inchar printf len d len for i 0 i 2.scanf gets 與getchar 的區別 ge...

程式設計小技巧

1 判斷奇數 if n 0x1 或用用 x 2 0,不要用 x 2 1,因為x可能是負 數。2 在判斷兩個浮點數 a 和 b 是否相等時,不要用 a b,應該判斷二者之差的絕對值 fabs a b 是否小於某個閾值,例如 1e 9 3 用 char 的值作為陣列下標 例如,統計字串中每個字元出現的次...