2017计蒜客比赛第二场A题B题
来源:互联网 发布:linux awk 编辑:程序博客网 时间:2024/05/22 06:35
A题 https://nanti.jisuanke.com/t/15503
思路:模拟打麻将,抓拍顺抓倒着数丢色子
AC代码
#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <queue>#include <map>#include <stack>#include <algorithm>using namespace std;const int max_n = 100005;int num1,num2,num3,num4;int k,d;vector<pair<int,int> >v;bool judge(int x,int y) { int sum = num1+num2+num3+num4; int t = min(x,y)+1; int g = x+y; g %= 4; int j = 0; if(g == 0) { j = num1; } else if(g == 3) { j = num1+num4; } else if(g == 2) { j = num1+num4+num3; } j = (j+t-1)%sum; int fg = 0; int flag = 0; int wan = 1; int cnt = 0; for(int kk = j; kk < sum && cnt < 24; kk++) { fg++; cnt++; if(wan == 1 && (v[kk].first == k &&(v[kk].second == d||v[kk].second == d+1))) { flag++; } if(fg%2 == 0) { wan++; wan %= 4; } } for(int kk = 0; kk < j && cnt < 24; ++kk) { fg++; cnt++; if(wan == 1 && (v[kk].first == k &&(v[kk].second == d||v[kk].second == d+1))) { flag++; } if(fg%2 == 0) { wan++; wan %= 4; } } if(flag == 2) { return true; } return false;}int main() { cin >> num1 >> num2 >> num3 >> num4; cin >> k >> d; k %= 4; for(int i = 1; i <= num1; i++) { v.push_back(pair<int,int>(1,i)); } for(int i = 1; i <= num4; i++) { v.push_back(pair<int,int>(0,i)); } for(int i = 1; i <= num3; i++) { v.push_back(pair<int,int>(3,i)); } for(int i = 1; i <= num2; i++) { v.push_back(pair<int,int>(2,i)); } int ans = 0; bool used[10][10]; memset(used,0,sizeof(used)); for(int i = 1; i < 7; i++) { for(int j = 1; j < 7; j++) { if(judge(i,j) && !used[i][j]) { //cout << i << " " << j <<endl; used[i][j] = 1; used[j][i] = 1; ans++; } } } cout << ans<<endl; return 0;}我自己写的真的很烦
B题 https://nanti.jisuanke.com/t/15504
简单版本表达式求值,利用栈模拟,打一份以前写过的表达式求值就可以了,表达式求值写起来很麻烦,所以用Python
n = input()a = input()b = eval(a)if type(b) == int:print(b)else:print("%.6f"%b)
C++代码,由于自己写的栈的模拟错了,所以引用了这位巨巨的博客代码 http://blog.csdn.net/flyfy1/article/details/5309551 然后修改了一下就可以了
#include <iostream>#include <string>#include <stack>#include <fstream>using namespace std;bool isone(char c) { return (c=='+' || c=='-');}bool istwo(char c) { return (c=='*' || c=='/');}string shorten(string m) { stack<char> s; string sur; int i; char w; for(i=0; i<m.size(); i++) { if(isdigit(m[i]) || m[i]=='.') { while(isdigit(m[i]) || m[i]=='.') sur += m[i++]; i--; sur += '$'; } else if(isone(m[i])) { while(s.size() && (isone(s.top()) || istwo(s.top()))) { sur+=s.top(); s.pop(); } s.push(m[i]); } else if(m[i]==')') { while(s.top()!='(') { sur+=s.top(); s.pop(); } s.pop(); } else if(istwo(m[i])) { while(s.size() && istwo(s.top())) { sur+=s.top(); s.pop(); } s.push(m[i]); } else s.push(m[i]); } while(s.size()) { sur+=s.top(); s.pop(); } return sur;}double tentimes(int n) { double res=1; for(int i=0; i<n; i++) { res *= 10; } return res;}double str2double(string s) { double res=0; char c; int dec=0; for(int i=1; i<=s.size(); i++) { c=s[i-1]; if(c=='.') dec=i; else if(!dec) res = res*10 + c-'0'; else res += (c-'0')/tentimes(i-dec); } return res;}double calculate(string s) { double res, t; stack<double> num; string temp; int i; for(i=0; i<s.size(); i++) { temp=""; if(isdigit(s[i]) || s[i]=='.') { while(isdigit(s[i]) || s[i]=='.') temp+=s[i++]; //如果最后一位是数字,这样做会出错 num.push(str2double(temp)); } else { switch (s[i]) { case '+': t=num.top(); num.pop(); t+=num.top(); num.pop(); num.push(t); break; case '-': t=num.top(); num.pop(); t=num.top()-t; num.pop(); num.push(t); break; case '*': t=num.top(); num.pop(); t*=num.top(); num.pop(); num.push(t); break; case '/': t=num.top(); num.pop(); t=num.top()/t; num.pop(); num.push(t); break; } } } res=num.top(); return res;}int main() { int n; cin >> n; string s; for(int i = 0;i < n++;i){ cin >> s; } string mid, sur; cin >> mid; int flag = 0; for(int i = 0; i < mid.length(); ++i) { if(mid[i] == '.' || mid[i] == '/') { flag = 1; } } sur = shorten(mid); if(flag) { printf("%.6f\n",calculate(sur)); } else printf("%.0f\n",calculate(sur)); return 0;}
阅读全文
0 0
- 2017计蒜客比赛第二场A题B题
- SCNU省选校赛第二场B题题解
- SCNU省选校赛第二场B题题解
- 第二场热身赛A(简单水题)
- 多校赛第二场比赛总结
- 搜索比赛B题
- [找规律] 多校联合第二场 B题 Buildings
- 微软2017年预科生计划在线编程笔试第二场B题Diligent Robots
- HDU6046 hash 【2017多校联训第二场B】
- 2017 计蒜客初赛 第二场 A 百度的年会游戏
- 2017计蒜客第二场
- 搜索比赛A题
- 第一场 第二题
- 2017 计蒜之道 初赛 第二场 A题(百度的年会游戏)
- 2017 计蒜之道 初赛 第一场 A题B题
- 2017 计蒜之道 初赛 第一场 A题B题
- 2017 计蒜之道 初赛 第四场 (第二题) B. 商汤科技的行人检测(简单)
- 华为第二届 疯狂程序员比赛第二场
- 屏蔽刷postfix IP的脚本
- session一致性架构设计实践
- 优先队列(堆)
- 保留或不保留两位小数,数字分割或不分割
- MFC应用程序WinMain函数
- 2017计蒜客比赛第二场A题B题
- 树莓派GPIO
- java垃圾回收算法之-标记压缩
- UVa NO.10006 Carmichael Numbers
- Hyperledger Fabric V1.0学习之一---在mac上配置hyperledger fabric
- 找出不在预定数组中的自然数
- 杭电OJ--1.2.1--Elevator
- MySql数据库备份和恢复
- IDEA启用web项目不能即时刷新HTML或JSP页面问题