A. 24 Game
题意:n个数(1~n),每次取两个数,进行+,-,*运算中的一个,然后放回数列中,问是否能最后剩下一个24,输出每一步运算。
思路:稍微分析一下就知道,n>3时才有可能。其实所有n>3的情况都可以,只需要先乘出一个24,然后不断造1乘上去就可以了。分奇偶两种情况,具体见代码。
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <memory.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <ctype.h>
using namespace std;
int main(){
int n;
while(cin>>n){
if(n<4){
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
if(n&1){
printf("5 - 2 = 3\n");
printf("3 - 1 = 2\n");
printf("2 * 3 = 6\n");
printf("6 * 4 = 24\n");
for(int i=7;i<=n;i+=2){
printf("%d - %d = 1\n",i,i-1);
printf("24 * 1 = 24\n");
}
}else{
printf("1 * 2 = 2\n");
printf("2 * 3 = 6\n");
printf("6 * 4 = 24\n");
for(int i=6;i<=n;i+=2){
printf("%d - %d = 1\n",i,i-1);
printf("24 * 1 = 24\n");
}
}
}
}
return 0;
}
1939

被折叠的 条评论
为什么被折叠?



