/*
NO.1 內聯函數
(1)內聯函數是在“編譯時”將函數體嵌入在每一個調用處,相當於宏定義define
(2)inline關鍵字只是表示一個要求,編譯器並不承諾將inline修飾的函數作爲內聯
(3)在現代編譯器中,沒有用inline修飾的函數也可能被編譯爲內聯
(4)內聯函數應該是比較簡單的函數,結構簡單,語句少,頻繁調用
(5)帶有遞歸調用或者循環的函數不能以內聯方式處理
*/
/*
NO.2 帶默認形參值的函數
注:在默認形參值的右面不能有非默認形參值的參數
舉個栗子,糖炒的:
int add(int x, int y = 0) 正確
int add(int x = 0, int y) 錯誤
*/
/*
NO.3 重載函數
(1)函數名相同
(2)形參必須不同:個數不同或者類型不同
(3)編譯器不以形參名來區分函數,也不以返回值來區分函數
舉個栗子,還是糖炒的
(1)int add(int x, int y); double add(double x, double y);
(2)int add(int x, int y); int add(int x, int y, int z);
(3)int add(int x, int y); void add(int a, int b); ->錯誤
*/
/*
NO.4 constexpr
變量
(1)constexpr修飾的變量必須用常量或者常量表達式來初始化
(2)到目前爲止,算數類型、指針、引用都可以定義爲constexpr自定義類,string等不可以
函數
(1)constexpr修飾的函數在其所有參數都是constexpr時,一定返回constexpr
(2)函數體中有且只有一條return語句
*/
浮點型取整:
double強制轉換int,向下取整
floor(),向下取整
ceil(),向上取整
round(),四捨五入取整
點燈問題
題目描述:有n盞燈,編號依次爲1,2,3,…,n;初始化時,所有燈都是關閉狀態;小明第一次將編號爲1,2,3,…,共n盞燈都打開了;第二次將編號爲2,4,6,…,共n/2盞燈都關閉了;第三次將編號爲3,6,9,…,共n/3盞燈進行操作,若是之前關閉狀態則打開,若是打開狀態,則關閉;第四次將4,8,12,…,共n/4盞燈進行操作。這樣操作了n次,問最後亮了幾盞燈。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int T; cin >> T;
while(T -- )
{
int n; cin >> n;
cout << (int)sqrt(n) << endl;
//只有完全平方數的因子有奇數個(因爲平方根*平方根=完全平方數)
//對燈操作奇數次最終纔是亮的
//所以答案爲n取平方向下取整
}
return 0;
}