ACM – UVa10006 – 快速幂

水题一发。无奈自己没有好好审清题意,另外快速幂居然写错了- =

快速幂在过程中修改a的值,但是我却计算成了在偶数时相乘,调试半天。看来还是咩有好好理解啊。

ACM – UVa138 – 数学基础

这道题目其实就是推个公式,主要还是考验编程技巧。。

首先double的精度范围是15-16位,浮点数运算还是最快的,依据最后一个答案(总共10组),平方为16位刚好够用。

如果想要最精确的结果,当然还是使用long double或者long long来来保证精度问题。不过计算速度就会有所损失,采取二分的方法加速比较好。


利用double的代码:

利用long long的代码:


不过有一点就是无论怎么个快法,不使用打表肯定是会超时的,所以算出来直接上交即可。= =。这在大赛中应该也是允许的吧。

山东省第五届省赛 Circle

首先一点什么是高斯消元?

高斯消元其实就是一种求行列式的值的方法。

例如

|a[0][0]_x1 + a[0][1]_x2+ … a[0][n-1]_xn = a[0][n]|

|a[1][0]_x1 + a[1][1]_x2+ … a[1][n-1]_xn = a[1][n]|

|a[2][0]_x1 + a[2][1]_x2+ … a[2][n-1]_xn = a[2][n]|

|a[3][0]_x1 + a[3][1]_x2+ … a[3][n-1]_xn = a[3][n]|

|a[n-1][0]_x1 + a[n-1][1]_x2+ … a[n-1][n-1]*xn = a[n-1][n]|

已知a[x][y],求x1, x2 .. xn的值。这个时候就可以使用高斯消元。

本题目就是高斯消元求解的一道题目。

依据题意,可以列出方程:

$$E[x] = 0.5_(E[x-1]+1) + 0.5_(E[x+1]+1)$$

其中E代表期望,利用高斯消元我们可以得到x1-xn的值,输出我们需要的E[x]即可。

高斯消元其实就是我们所说的消元,但是针对于大型的矩阵。

倒是很简单的题目。

山东省第五届省赛 Hearthstone II

斯特林数stirling

  • 第一类 stirling数 s(n, k)

n个人分成k组,组内再按特定顺序围圈

也就是分成了k组,组内就像是项链颜色一样,

  1. ( {A, B}, {C, D} )
  2. ( {B, A}, {C, D} )

属于一组

  1. ({A}, {B, C, D})
  2. ({A}, {B, D, C})

不属于一组

给定 $s(n,0)=0,s(1,1)=1$,有递归关系$s(n,k)=s(n-1,k-1) + (n-1) s(n-1,k)$

  • 第二类 stirling数

S(n, k) 是把p元素集合划分到k个不可区分的盒子里且没有空盒的划分个数。

公式:

$$ S(n, n) = 1 (n >= 0) $$

$$ S(n, 0) = 0 (n >= 1) $$

$$ S(n,k)=k*S(n-1,k)+S(n-1,k-1),\text (1<=k<=n-1) $$

这样题目就好解决了。第五届省赛题目神经病。

因为每个桌子是不同的,所以还要利用乘法原理,$ans*m!$

蓝桥杯基础练习

数列排序

十六进制转八进制

转换的时候,先转换成二进制,再转换成十六进制。

这道题目还是比较有意思的,使用string只需要78ms,使用char*则超时。可能strcat每次都需要从头遍历数组,但是string则不需要。

当然,如果是数字没有这么大,完全可以这样处理

是不是很精髓= =

十六进制转十进制

十进制转十六进制

由此也可以想到,如果是二进制的相关转换(数值范围允许的情况),我们可以写一个简单二进制转十六进制,然后利用sscanf来做进一步转换。

当然,正规的做法还是除二取余,逆序排列。

特殊回文数

回文数

特殊的数字


只要读题不出问题就没有问题了。。。不刷了

蓝桥杯入门训练题目

蓝桥的系统需要I64d这种输入格式。无力吐槽。

Fibonacci数列

圆的面积

序列求和

A+B

ACM – 快速生成测试数据

比赛的时候出现了100 * 100组数据的情况,但是当时使用freopen忘记了具体的步骤,特意重新写一下,也是属于基础的内容。

生成一百行数据,每行100个数据,每个数据为100。

运行过后生成的数据(本来应该输出在屏幕上,此时不会输出到屏幕,而是输出到文件)会保存到output文件中。如果需要使用直接更改output的文件名,再使用一次freopen('r')即可。