a<<n; //即a*(2^n)
1<<n; //即2的n次幂
a>>n; //即a/(2^n)
n & 1; //取二进制的最末位
if(n&1); //奇数
if(!(n&1)); //偶数
//求数组中最值
int a[] = {1,2,3,4,5};
cout<<*max_element(a,a+5)<<" "<<*min_element(a,a+5)<<endl;
//对字符串/数组进行全排列
while(next_permutation(s.begin(),s.end()))
cout<<s<<endl;
//求数字x的位数
printf("%d\n", (int)log10(x) + 1);
//去除前导0
s.erase(0,s.find_first_not_of('0'));
//使用位运算进行字母大小写变换
char c='a';
printf("%c %c %c",c^32,c^' ',c^(1<<5));
//求n的二进制的第k位数字
n >> k & 1;
//返回n的二进制最后一位1所代表的十进制数
lowbit(n) = n & -n;
//随机化区间内的所有元素
random_shuffle
//给你的好友来上一句这个他会非常高兴的.(哈哈哈哈)
#define sort random_shuffle
//cout 输出控制
cout << oct << 8 << endl; //八进制
cout << dec << 10 << endl; //十进制
cout << hex << 16 << endl; //十六进制
注意:默认按照10进制输出,当修改成其他进制输出时会一直保持该进制输出
如需恢复默认10进制输出,则需要加上cout<<dec<<......
例如:
cout << 12 << endl; //12 输出十进制的12
cout << hex << 12 << endl; //c 修改成输出十六进制的12
cout << 12 << endl; //c 还是保持输出十六进制的12
cout << dec << 12 << endl; //12 恢复输出十进制的12
cout << 12 << endl; //12 输出十进制的12
埃筛图示
试除法:
O
(
n
2
)
O(n^2)
O(n2)或者
O
(
n
n
)
O(n\sqrt n)
O(nn)
朴素埃筛:
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)
埃筛:
O
(
n
l
o
g
l
o
g
n
)
O(nloglogn)
O(nloglogn)
线性筛:
O
(
n
)
O(n)
O(n)
//记得替换噢
//记得替换噢
//记得替换噢
//记得替换噢
//记得替换噢
//记得替换噢
//记得替换噢
//记得替换噢
//记得替换噢