做了一些csp基础题,记录了结题过程中自己没有考虑的地方以及一些技巧。
求中位数
/*
* 求n个数的中位数
*
* 对于一组有有限个数的数据来说,它们的中位数是这样的一种数:这群数据里的一半的数据比它大,而另外一半数据比它小。
* 计算有限个数的数据的中位数的方法是:把所有的同类数据按照 **大小的顺序排列** 。
* 数组的排序可以使用c++ algorithm里面的sort()和reverse()
* 如果数据的个数是奇数,则中间那个数据就是这群数据的中位数;
* 如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。
*/
数组赋初值
memset(arr, 0, sizeof(arr[0])*n);
格式化输出(常用)
-
setw(n)
预设宽度,
setw
只作用于紧随其后的部分,当输出宽度大于n时,setw不生效 -
setfill(char c)
就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
-
dec/hex/otc
进制转换
-
setprecision(long f)
- 使用
setprecision(n)
可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。 - 如果
setprecision(n)
与setiosflags(ios::fixed)
合用,可以控制小数点右边的数字个数。
- 使用
setiosflags(ios::fixed)
是用定点方式表示实数。
常用函数
函数 | 描述 |
---|---|
double pow(double, double); | 假设第一个参数为 x,第二个参数为 y,则该函数返回 x 的 y 次方。 |
double sqrt(double); | 该函数返回参数的平方根。 |
int abs(int); | 该函数返回整数的绝对值 |
double fabs(double); | 该函数返回任意一个十进制数的绝对值。 |
double floor(double); | 该函数返回一个小于或等于传入参数的最大整数 |