首先可以得出n<=3的时候一定不行,然后对于n>=4的情况可以分类讨论,n=4和n=5的时候一定可以,然后考虑n>=6的情况,如果n是偶数,比如n=10,那么这个数列就是1,2,3,4,5,6,7,8,9,10 ,让4后面的数两两相减,即10-9=1 ; 8-7=1; 6-5=1; 前面的1,2,3,4一定可以组成24,再用这个24和后面的1相乘即可。n是奇数的情况类似。
#include <iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
void four()
{
puts("1 * 2 = 2");
puts("2 * 3 = 6");
puts("4 * 6 = 24");
}
void five()
{
puts("3 + 5 = 8");
puts("2 - 1 = 1");
puts("4 - 1 = 3");
puts("8 * 3 = 24");
}
int main()
{
int n,i;
scanf("%d",&n);
if(n<=3) {puts("NO");return 0;}
puts("YES");
if(n==4) four();
else if(n==5) five();
else if(n&1){
five();
for(i=n;i>=6;i-=2){
printf("%d - %d = 1\n",i,i-1);
}
int tmp=(n-5)/2;
for(i=1;i<tmp;i++){
printf("1 * 1 = 1\n");
}
printf("24 * 1 = 24\n");
}
else{
four();
for(i=n;i>=5;i-=2){
printf("%d - %d = 1\n",i,i-1);
}
int tmp=(n-4)/2;
for(i=1;i<tmp;i++){
printf("1 * 1 = 1\n");
}
printf("24 * 1 = 24\n");
}
return 0;
}