ccf考试前练手有感之 ccf24点
难受,练个第二题自闭了,丢脸,在想要不要给设成私密
太多细节没有考虑到
1.循环中的初始化(去死吧!!!还是出这个问题,当初学选择排序就知道这东西,脸都丢完了)
2.char的数据范围,竟然都没算一下,在样例就爆了,样例挺良心
3.数字经过计算可能和运算符号的ascii码相同,所以要把数字和运算符分开来
总之,每个语句都要把当下所有情况考虑到
二十四点是一款著名的纸牌游戏,其游戏的目标是使用
定义每一个游戏由
其中加法用符号 +
表示,减法用符号 -
表示,乘法用小写字母 x
表示,除法用符号 /
表示。
在游戏里除法为整除(向下取整),例如
老师给了你
输入格式
第一行输入一个整数
从第
输出格式
包含 Yes
,否则输出字符串 No
。
#include#define go(i,a,b) for(int i=a;i<=b;++i) #define ll long long using namespace std; char s[20]; int stackk[20]; int tail; void push_backk(){ tail=0; go(i,0,7){ if( tail>=1 &&(stackk[tail]=='x'||stackk[tail]=='/') &&i%2==0 ){ if(stackk[tail]=='x'){ --tail; stackk[tail]=(stackk[tail]-48)*int(s[i]-48)+48; } else{ --tail; stackk[tail]=(stackk[tail]-48)/(s[i]-48)+48; } } else{ stackk[++tail]=s[i]; }//printf("%d\n", stackk[tail]-48); } } void addsub(){ int ans=stackk[1]-48; for(int i=3;i<=tail;i+=2){ if(stackk[i-1]=='+') ans+=(stackk[i]-48); else ans-=(stackk[i]-48); } if(ans==24) printf("Yes\n"); else printf("No\n"); } int main(){ //cout< int n; cin>>n; ++n; while(--n){ scanf("%s",s); push_backk(); addsub(); } return 0; }