- __gcd()函数 (注意是两个下划线) 相遇Codeforces Round #587 (Div. 3)
__gcd是内置于 algorithm 头文件中的函数,主要是用于求两个数的最大公约数,这是这个函数int、long long类型都可以,类型必须相同,而且浮点数不行。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<__gcd(a,b)<<endl;
return 0;
}
2.accumulate
accumulate是内置于 numeric 头文件中的函数,可用于累加求和。
accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型。
int sum = accumulate(vec.begin() , vec.end() , n);
可以使用accumulate把string型的vector容器中的元素连接起来:
string sum = accumulate(v.begin() , v.end() , string(" "));
从空字符串开始,把vec里的每个元素连接成一个字符串。
3.lower_bound( begin,end,num) 相遇10.1 Codeforces Round #590 (Div.3)
从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
举个栗子:
auto it=s[i].lower_bound(l);
if(it==s[i].end() or *it>r) continue;
ans++;
4.atoi() 原型: int atoi(const char *str );
函数功能:把字符串转换成整型数。
参数str:要进行转换的字符串
返回值:每个函数返回 int 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则atoi的返回值为 0。
注意:使用该函数时要注意atoi返回的是int类型,注意输入str的范围不要超出int类型的范围。
int a;
char *s = "-12345";
a = atoi(s);
5.__builtin_popcountll
10.26 Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) C题
计算一个 32 位无符号整数有多少个位为1
例如
int n=__builtin_popcountll(p);