sprintf sscanf printf scanf 四个的用法,学习一下
string 函数的各种用法
(int) a是强制转化,可以将 double的 a = 1.1,变为 1
abs() -> int & fabs() -> double & labs()-> long long
*
必须写成这样的,因为 a乘zz乘b 这个整体会超过long long 所以加(ll) 强制转化
sscanf(line.c_str(),"%d:%d:%d %d:%d:%d (+%d)",&h,&m,&s,&h1,&m1,&s1,&d);
重点:line.c_str()
int最大值是2147483647(21亿 , 2后面9个0)
cout << (ans ? "YES" : "NO") << endl;//ans是真为第一个
bool ans = true;
vector<int> cnt(26); //cnt数组全为0
bool cmp(int a,int b){//重大到小排序
return a>b;
}
sort(a,a+n,cmp);
int cmp(data a,data b)//结构体排序,重小到大
{
return a.x<b.x ? 1:0;
}
int a[10][10]; fill(a[0],a[0]+10*10,20);//三个参数,前面两个是地址,最后一个是填充值(int 的初始化) fill(dp[0][0][0],dp[0][0][0]+52*52*52*52,0);
char a[20] memset(a,'1',20)//只能对char初始化
或int a[10] memset(a,0,10) memset(a,0x3f3f3f3f,sizeof(a))//0x3f3f3f3f表示接近于1e9的数
在内角a的正多边形中,有这样的公式(n-2)*180/n==a;注意n>2
n为边数,a为多边形度数
在写题时注意把所有的情况都写出来,进行比较,学会使用swap函数
在1LL中,LL其实代表long long, * 1LL是为了在计算时,把int类型的变量转化为long long,然后再赋值给long long类型的变量。
浮点数为fabs 整形为abs
在devcpp中用 endl 调试过不去
数组长度最多为 1e5+10;//如果数组在int main()里定义了话是这样
另一种说法(在主函数外部定义) 可以开1e8+10 二维数组每个1e4+10
<< 是左位移的符号。 m的值是2,用2进制表示就是10。
m<<=1相当于m=m<<1;
m<<1向左移一位,也就是二进制数0010变成了0100.然后再将0100也就是4赋值给m。
PS:<<是按位移中的左位移,向左移动几位就是乘以2的几次方;
>>是按位移中的右位移,向右移动几位就是除以2的几次方。
>当然,这种运算需把要位移的数转换成2进制。
>移位操作是从左向右进行的`
>移位操作只适用于整数
优先级 从大到小
乘除加减 >> & =