-
Notifications
You must be signed in to change notification settings - Fork 0
/
magic n_gon ring1.cpp
108 lines (99 loc) · 1.83 KB
/
magic n_gon ring1.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include<stdio.h>
#include<conio.h>
int fact(int a)
{
int i;
if(a==0)a=1;
for(i=a-1;i>=1;i--)
{
a*=i;
}
return a;
}
main()
{
int i,j,l;
int classe,max=13,test;
int string[]={1,2,3,4,5,6,7,8,9,10};
int num[10];
int answer[15]={0};
printf(" total ²²\t solution set\n");
printf("²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²\n");
for(max=13;max<=20;max++)
for(l=1;l<=fact(10);l++)
{
classe=l;
for(i=0;i<10;i++) string[i]=i+1;
for(i=9;i>=0;i--)
{
for(j=0;j<10;j++)
{
if(classe<=fact(i)*(j+1))
{
classe-=fact(i)*j;
num[i]=string[j];
while(j!=10)
{
string[j]=string[j+1];
j++;
}
break;
}
}
}
if(num[0]<num[1]&&num[0]<num[2]&&num[0]<num[3]&&num[0]<num[4])
{
if(num[0]==10||num[1]==10||num[2]==10||num[3]==10||num[4]==10)
{
if(num[0]+num[5]+num[6]==max)
if(num[1]+num[6]+num[7]==max)
if(num[2]+num[7]+num[8]==max)
if(num[3]+num[8]+num[9]==max)
if(num[4]+num[9]+num[5]==max)
{
test=0;
printf(" %d ²² ",max);
for(i=0;i<10;i++)
{
if(answer[i]<num[i])
{
test=1;
break;
}
else if(answer[i]>num[i])
{
test=0;
break;
}
}
for(i=0;i<5;i++)
{
if(i<4)
{
printf("%d %d %d,",num[i],num[i+5],num[i+6]);
if(test!=0)
{
answer[i*3]=num[i];
answer[i*3+1]=num[i+5];
answer[i*3+2]=num[i+6];
}
}
else
{
printf("%d %d %d\n",num[i],num[i+5],num[5]);
if(test!=0)
{
answer[i*3]=num[i];
answer[i*3+1]=num[i+5];
answer[i*3+2]=num[5];
}
}
}
}
}
}
}
printf("²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²\n");
printf("\nanswer is : ");
for(i=0;i<15;i++) printf("%d",answer[i]);
}