#include<cstdio> //将stdio.h的内容用C++的头文件形式表现出来。
#include<algorithm>
using namespace std;
#define N 100100
int gcd(int a, int b){
return !b ? a : gcd(b, a % b);
}
int main(){
int t;
scanf("%d", &t);
while(t--){
static int arr[N],arr1[N*10], n,m;
scanf("%d%d",&n,&m);
fill(arr1, arr1+N*10, 0);
for(int i=1;i<=m;i++)
scanf("%d", &arr[i]);
sort(arr+1,arr+1+m); //一定要排序
for(int i=2;i<=m;i++)
arr1[arr[i]-arr[i-1]]++;
arr1[n-arr[m]+arr[1]]++; //第一个和最后一个单独算
for(int i = n; i >=1; i--)
arr1[i]+=arr1[i+1]; //小的间隔是大的间隔的子集 所以加上
for(int i=1;i<=n;i++)
{
if(!arr1[i])
printf("0\n");
else{
int cas = gcd(arr1[i], n);
printf("%d/%d\n", arr1[i]/cas, n/cas);
}
}
}
return 0;
}
最大公约数算法:
int gcd(int a, int b){
return !b ? a : gcd(b, a % b); //辗转相除法
}