題目傳送
題意:
給你乙個排列n(也就是元素從1到n),現在讓你構造一下這個陣列,使得a[i] % | a[i] - a[i-2] | == 0(a[i] - a[i-2]的絕對值,i >= 3)。
思路:
如果我使得a[i] - a[i-2] == 1,那麼不就萬能啦?!
ac**
#include
inline
long
long
read()
while
(c >=
'0'&& c <=
'9')
return x*s;
}using
namespace std;
#define newnode (treenode *)malloc(sizeof(treenode))
#define mem(a,b) memset(a,b,sizeof(a))
#define lowbit(x) (x)&(-x)
const
int n =
1e6+10;
const
long
long infinf =
0x7f7f7f7f7f7f7f
;const
int inf =
0x3f3f3f3f
;const
double eps =
1e-7
;const
unsigned
long
long mod =
1e9+7;
const
double ii =
acos(-
1);const
double pp =
(ii*
1.0)/(
180.00);
typedef
long
long ll;
typedef
unsigned
long
long ull;
typedef pair<
int,
int> pii;
typedef pair piil;
intmain()
;for
(int i =
1;i <= n;i +=2
) arr[i]
= num++
;for
(int i =
2;i <= n;i +=2
) arr[i]
= num++
;for
(int i =
1;i <= n;i++
) i != n ? cout << arr[i]
<<
" ": cout << arr[i]
<< endl;
}}
虛析構 純虛析構
析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。從高到低依次析構 因為在c 中,當乙個派生類物件通過使用乙個基類指標進行刪除 b a a a new b delete a 而這個基類有乙個非虛的析構函式,則結果是未定義的...
C 析構函式 虛析構函式
1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...
虛析構和純虛析構
多型使用時,如果子類有屬性開闢到堆區,那麼父類指標在釋放時無法帶呼叫到子類的析構 解決方式 將父類的析構函式改為純虛析構或者虛析構 1.可以解決父類指標釋放子類物件 2.都必須要有具體的函式實現 虛析構和純虛析構的區別 如果是純虛析構,該類屬於抽象類,無法例項化物件 include include ...