📄 分数的位置.cpp
字号:
#include <iostream>
using namespace std;
int main()
{
int m, n;
while (cin >> m >> n)
{
int **data = new int *[(m-1)*m/2];
int i;
for (i=0; i<(m-1)*m/2; i++)
{
data[i] = new int [2];
}
int count = 0, j;
for (i=m; i>=2; i--)
{
for (j=1; j<i; j++)
{
cout <<(data[count][0] = j)<<"/"<<(data[count][1] = i)<<endl;
count++;
}
}
int temp1, temp2, flag = 1;
for (i=1; i<(m-1)*m/2 && flag==1; i++)
{
flag = 0;
for (j=0; j<(m-1)*m/2-i; j++)
{
int t = data[j][0]*data[j+1][1]-data[j][1]*data[j+1][0];
if (t > 0 || (t == 0 && data[j][0] > data[j+1][0]))
{
flag = 1;
temp1 = data[j][0];
data[j][0] = data[j+1][0];
data[j+1][0] = temp1;
temp2 = data[j][1];
data[j][1] = data[j+1][1];
data[j+1][1] = temp2;
}
}
// cout << data[j][0] << "/" << data[j][1] << " ";
}
// cout << data[0][0] << " / " << data[0][1]<< endl;
i = 1;
j = 0;
while (true)
{
if (i >= n)
{
printf("%d/%d\n", data[j][0], data[j][1]);
break;
}
if ((data[j][0]*data[j+1][1]-data[j][1]*data[j+1][0]) != 0)
{
i++;
// cout << data[j][0] << "/" << data[j][1]<< endl;
}
j++;
}
delete []data;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -