#include<iostream>
#include<cstdio>
#include<math.h>
#include<iomanip>
using namespace std;
int n;
int m[1000];
char tmp[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
work(int n,int k)
{
int temp;
temp=n%k;
n/=k;
if(n!=0)//判断是否到达边界n=0
work(n,k);
cout<<setiosflags(ios::right)<<setw(1)<<tmp[temp];
}
int main()
{
int s,l=0;
scanf("%d",&n);
int i,j,a;
cout<<setw(4)<<"*";
for(i=0;i<=n;i++)
cout<<setiosflags(ios::right)<<setw(4)<<tmp[i];
cout<<" "<<endl;
for(i=0;i<n;i++)
{
cout<<setw(4)<<tmp[i];
for(j=0;j<=i;j++)
{
cout<<setiosflags(ios::right)<<setw(2)<<" ";
work(i*j,n);
}
cout<<endl;
}
return 0;
}
//按照题目要求实现
#include<iostream>
#include<cstdio>
#include<math.h>
#include<iomanip>
using namespace std;
int n;
int m[1000];
char tmp[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void work(int n,int k)//这里完成的话是在锻炼耐心,费了一个小时
{
char a[4];
int i,yushu;
yushu=n%k;
n/=k;
if(n==0)
{a[0]=tmp[yushu];
a[1]='\0';}
else
{
a[1]=tmp[yushu];
yushu=n%k;
a[0]=tmp[yushu];
a[2]='\0';
}
cout<<setw(4)<<a;
}
int main()
{
int s,l=0;
scanf("%d",&n);
int i,j,a;
cout<<setw(4)<<"*";
for(i=0;i<n;i++)
cout<<setiosflags(ios::right)<<setw(4)<<tmp[i];
cout<<" "<<endl;
for(i=0;i<n;i++)
{
cout<<setw(4)<<tmp[i];
for(j=0;j<=i;j++)
{
work(i*j,n);
}
cout<<endl;
}
return 0;
}