题目链接:点击打开链接
题意:
给定一个n表示有n个数字[1,n]
问:
用+ - * 3种运算把n个数变成24是否可行,若可行输出任意解。
思路:
因为2*3*4 = 24;
所以当n>=4时一定有解。
若n是偶数则4个连续数一组消成0,若还多余2个则变成 (n+1)-n = 1.
若n是奇数则把5消掉: 5-1 = 4; 4-2 = 2;。
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
static int N = 200050;
int n;
public void work(){
n = cin.nextInt();
if(n < 4){
out.println("NO");
out.close();
return ;
}
out.println("YES");
int m = n;
if(n%2 == 1){
out.println("5 - 1 = 4");
out.println("4 - 2 = 2");
n = 6;
}
else {out.println("1 * 2 = 2"); n = 5;}
for(; n+3 <= m; n+=4){
out.printf("%d - %d = 1\n", n+1, n);
out.printf("%d - %d = -1\n", n+2, n+3);
out.printf("-1 + 1 = 0\n");
out.println("0 + 2 = 2");
}
if(n < m){
out.printf("%d - %d = 1\n", n+1, n);
out.println("1 * 2 = 2");
}
out.println("3 * 4 = 12");
out.println("12 * 2 = 24");
out.close();
}
Main() {
cin = new Scanner(System.in);
out = new PrintWriter(System.out);
}
public static void main(String[] args) {
Main e = new Main();
e.work();
}
public Scanner cin;
public PrintWriter out;
}