P2614 计算器弹琴

发布时间 2023-09-08 09:44:07作者: 是002呀

题目传送门

思路提供

这只是一道简单的模拟
我们只需要对于 .-() 进行特判即可,但是还是要注意对每个数的定义类型防止出现错误。

AC code

#include<bits/stdc++.h>
using namespace std;
int n,h,len,ans,k;
double t,m;
string ch[105];//用string比char方便一点(本人是这么觉得的)
double o(int x){//因为有返回值是浮点型所以要加上double
    if(x==0) return 1.0;
    if(x==1) return 0.5;
    if(x==2) return 0.25;
    if(x==3) return 0.125;
}
int main(){
	cin>>n>>t;
	while(cin>>ch[h]){//用while进行输入
        int len=ch[h].size();
		for(int i=0;i<len;i++){
			if(ch[h][i]!='.' && ch[h][i]!='(' && ch[h][i]!=')') m+=o(k);
            if(ch[h][i]=='(') k++;
            if(ch[h][i]==')') k--;
            if(ch[h][i]=='.'){
                if(ch[h][i-1]=='-') m+=1.0;
                else m+=o(k)*0.5;         
            }       
		}//以上就是各种特判,是主要代码
		h++;
	}
	ans=(m*60.0)/t;
	cout<<ans;
	return 0;
}