ccf考试前练手有感之 ccf24点
2021/12/3 23:16:48
本文主要是介绍ccf考试前练手有感之 ccf24点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
难受,练个第二题自闭了,丢脸,在想要不要给设成私密
太多细节没有考虑到
1.循环中的初始化(去死吧!!!还是出这个问题,当初学选择排序就知道这东西,脸都丢完了)
2.char的数据范围,竟然都没算一下,在样例就爆了,样例挺良心
3.数字经过计算可能和运算符号的ascii码相同,所以要把数字和运算符分开来
总之,每个语句都要把当下所有情况考虑到
二十四点是一款著名的纸牌游戏,其游戏的目标是使用 3 个加减乘除运算使得 4 张纸牌上数字的运算结果为 24。
定义每一个游戏由 4 个从 1−9 的数字和 3 个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号和其他字符,运算顺序按照四则运算顺序进行。
其中加法用符号 +
表示,减法用符号 -
表示,乘法用小写字母 x
表示,除法用符号 /
表示。
在游戏里除法为整除(向下取整),例如 2/3=0,3/2=1,4/2=2,−3/7=−12/3=0,3/2=1,4/2=2,−3/7=−1。
老师给了你 nn 个游戏的解,请你编写程序验证每个游戏的结果是否为 2424。
输入格式
第一行输入一个整数 n。
从第 2 行开始到第 n+1 行中,每一行包含一个长度为 7 的字符串,为上述的 24 点游戏,保证数据格式合法。
输出格式
包含 n 行,对于每一个游戏,如果其结果为 24 则输出字符串 Yes
,否则输出字符串 No
。
#include<bits/stdc++.h> #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('/')<<int('x'); int n; cin>>n; ++n; while(--n){ scanf("%s",s); push_backk(); addsub(); } return 0; }
这篇关于ccf考试前练手有感之 ccf24点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris
- 2024-05-292024年IDC行业的深度挖掘:机遇、挑战与未来展望
- 2024-05-29五款扩展组件齐发 —— Volcano、Keda、Crane-scheduler 等,邀你体验