题解 UVA12004 【Bubble Sort】

· · 题解

简单题意:

求出对 n 个数进行冒泡排序的交换次数。

思路&解析:

经过分析,其实就是让你求出 数字对的个数 \times\frac{1}2。数字对的个数就是 C^2_n,然后\times\frac{1}2 就可以了。

虽然公式得到了,但是需要整理一下(毕竟计算机不会直接输出 C^2_n)。

C^2_n\times\frac{1}2=\frac{C^2_n}2=\frac{n*(n-1)}4 最后注意,如果$\frac{n*(n-1)}2$已经是奇数,也就是说不能被最后的一个 $2$ 整除了,要用分数表示,例如 $1/2$。 ### 代码: ```cpp #include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ int k; cin>>k; k=k*(k-1)/2; if(k%2==0)cout<<"Case "<<i<<": "<<k/2<<"\n"; else cout<<"Case "<<i<<": "<<k<<"/2\n";//套公式 } return 0; } ``` ### 最后的提醒: UVA现在好卡,如果卡了几次后就不要一直交了,~~浪费提交次数~~。