📄 acmfactorx.cpp
字号:
#include<iostream>
using namespace std;
int fac;
int L[10]={1,1,2,6,18,54,162,486,1458,4374};
int LL[10]={2,4,10,28,82,244,730,2188,2188,2188};
int LT[10]={0,1,3,9,27,81,243,729,2187,6561};
int setL(int y){
// if(y==2) return 1;
int i=fac;
while(y>1) {//1
if((y%L[i])>(2*L[i-1])) return 0;
else y%=L[i--];
}
return y;
}
int TS(int x){
int k=fac;
while(x<L[k--]);
return x-
L[k];
}
int setLL(int y){
int i=fac;
while(y<=LT[i]) i--;
return i;
}
int equalll(int a,int b){
if(a==b) return 1;
int k=0;
while(k<=fac)
if((a+b==LL[k++])) return 1;
return 0;
}
void print(int n){
int top=1;
while(--n) top*=3;
top++;
int i,j,iL,jL,c;
for(i=1;i<top;i++){//by row
iL=setL(i);
for(j=1;j<top;j++){//by col
jL=setL(j);
if(equalll(i,j)) {cout<<'T';continue;}
if((iL&&jL)) {cout<<'X';continue;}
c=setLL(i)>setLL(j)?setLL(i):setLL(j);//cout<<c<<' '<<LT[c]<<' ';
if(LT[c]<i&<[c]<j&&i<=2*LT[c+1]&&j<=2*LT[c+1])
if(setL(i-LT[c])&&setL(j-LT[c])) {cout<<'E';continue;}
cout<<' ';
}
cout<<endl;
}
cout<<'-'<<endl;
}
int main(){
while(1){
cout<<"Please input factor(<7) :"<<endl;
cin>>fac;if(fac==0) return 0;
print(fac);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -