题目描述

总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文。(参看洛谷P2549)

小A发现了一个计算器的另一个隐藏功能——弹琴。

http://www.bilibili.com/video/av2205500/

如果按上一个键,比如说1,就会发出中音“Do”。

这边给出按键音高表

+ 低音Fa
< 低音So
* 低音La
/ 低音Xi
1 中音Do
2 中音Re
3 中音Mi
4 中音Fa
5 中音So
6 中音La
7 高音Xi
8 高音Do
9 高音Re
= 高音Mi
% 高音Fa
C 高音So
M 高音La

现在小A搞到了一份乐谱——我们称为计算器谱,一种变形的简谱。

时值(也就是按的时间长度)是这么记录的,例如:

1 是四分音符,占1拍。

1- 是二分音符,占2拍。

1--- 是全音符,占四拍。

对于小于四分音符的音符,我们用嵌套括号表示,例如

(1(34(56))2)

1和2在一层括号中,是八分音符,占0.5拍。

3和4在两层括号中,是16分音符,占0.25拍。

5和6在三层括号中,是32分音符,占1/8拍。当然实际上比较少见。

括号中不会出现‘-’这个符号。

不会出现四层或以上的括号。

在一个音符后面添加一个附点即“.”表示这个音符延长1/2倍。

例如 1-.是3拍,1.是1.5拍,(3.(45.))3是3/4拍,4是1/4拍,5是3/8拍。

附点不会连续添加两个或以上,也不会出现超过四拍的音符。

不考虑其他的乐理符号。

另外整个乐谱会给一个速度,整数,意思是一分钟多少拍。

为了美观,乐谱可以随便换行、添加空格。这个忽略即可。

现在小A想知道,按完这个谱子,需要多少时间(单位:秒)

输入输出格式

输入格式:

第一行,两个整数n,T,表示谱子行数以及速度(拍每分)

接下来n行,给出乐谱。

输出格式:

一个整数,表示演奏需要花费的时间,单位秒,舍去小数部分。

输入输出样例

输入样例#1:

2 60
3345 5432 1123 322-
3345 5432 1123 211-
输出样例#1:

32
(一共32拍,每分钟60拍,所以是32秒。对了,这是欢乐颂的开头部分)
输入样例#2:

5 120
3(1.(3))55 8(7.(6))65 655(3.(1)) (4.(4))32-
3(1.(2))35 8(7.(6))65 655(4.(3)) (2.(3))21-
2.(3)44 6(6.(6))(5.(4))3 3.(5)88 (9.(8)7.(6))5-
=.(=)(9.(8))7 9.(8)(7.(6))5 8(856543) (2.(3))43-
=.(=)(9.(8))7 9.(8)(7.(6))5 8(857654) (3.(4))21-
输出样例#2:

40
(一共80拍,别问我怎么数的,一分钟120拍的话,是40秒。至于这是什么曲子?根据相关的法律政策,该部分未予显示。)

说明

http://bd.kuwo.cn/yinyue/4641527

对于40%的数据,没有附点没有括号

对于100%的数据,括号层数不会超过3层,不超过100行,每行不超过100个字符。

对于其中的一个数据,是《千本樱》。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
char c;
int n,t;
int sta=;
int cnt=,ans=;
int la=,now=;
int main()
{
scanf("%d%d\n",&n,&t);
while (cin>>c)
{
if (c==' '||c=='\n') now=; else
if (c=='(') now/=;
else if (c==')') now*=;
else if (c=='.') cnt+=now/;
else if (c=='-')
{
cnt+=now;
la++;
}else cnt+=now;
}
t*=;
ans=cnt*/t;
cout<<ans;
return ;
}

也许是因为精度,这个代码没过

#include<iostream>
#include<cstdio>
#include<math.h>
#include<algorithm>
#include<queue>
#include<string.h>
using namespace std;
int n,t,nn;
char c;
double tot,last=;
int main()
{
scanf("%d%d",&n,&t);
scanf("%c",&c);
for(int i=;i<=;i++)
{
if(nn==n) break;
scanf("%c",&c);
if(c>=''&&c<='')
{
tot+=last;
continue;
}
if(c==' '||c=='\n')
{
last=;
if(c=='\n') nn++;
continue; }
if(c=='(')
{
last/=;
continue;
}
if(c==')')
{
last*=;
continue;
}
if(c=='.')
{
tot+=last/;
continue;
}
if(c=='-')
{
tot++;last=;
continue; }
tot+=last;
}
tot=(double)tot/(t/);
cout<<tot;
return ;
}

P2614 计算器弹琴的更多相关文章

  1. 洛谷 P2614 计算器弹琴

    P2614 计算器弹琴 题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参看洛谷P2549) 小A发现了一个计算器的另一个隐藏功能——弹琴. http://www.bilib ...

  2. 1.C#WinForm基础制作简单计算器

    利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...

  3. 自己动手写计算器v1.1

    这个改动主要是使用工厂模式替代了简单工厂模式,这样做的好处是如果以后我们要扩充其他运算时,就不用总是去修改工厂类, 这是可以采取工厂模式,主要是将原来简单工厂类的逻辑判断分离出来,将它作为一个借口,与 ...

  4. 自己动手写计算器v1.0

    今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...

  5. 【IOS开发笔记03-视图相关】简单计算器的实现

    UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...

  6. [LeetCode] Basic Calculator 基本计算器

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  7. JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...

  8. 由ArcMap属性字段自增引出字段计算器使用Python的技巧

    1.前言       前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQL Server中对于数值型字段可以设置自增.所以我打开ArcCatalog查看发现只提供默认值 ...

  9. 前端学PHP之面向对象系列第六篇——简单图形面积计算器实现

    前面的话 本文用面向对象的技术来实现一个简单的图形面积计算器 图形类 //rect.class.php <?php abstract class Shape{ public $name; abs ...

随机推荐

  1. UsbManager, UsbDevice的简单示例

    activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  2. SpringMVC+ajaxFileUpload上传图片 IE浏览器弹下载框问题解决方式

    如题,简单记录一下这个问题的解决的方法,导致问题的核心原因是:ajaxfileupload不支持响应头ContentType为application/json的设置.而且IE也不支持这样的格式,而当我 ...

  3. 从源码理解 ThreadLocal

    为每个线程保存各自的拷贝,可以通过在Thread类中定义一个成员变量来保存每个线程值,这样也是线程安全的. 通过定义一个成员变量 sn 来实现,这里并没有使用ThreadLocal类来实现: publ ...

  4. 深入浅出Oracle学习笔记:Buffer Cache 和Shared pool

    Buffer cache 和 share pool 是sga中最重要最复杂的部分. 一.Buffer Cache 通常数据的读取.修改都是通过buffer cache 来完成的.buffer cach ...

  5. Caffe-Windows下遇到过的问题、技巧、解决方案

    转换数据,求均值: 转换数据 步骤大概是:建立一个train文件夹,里面放一个train.txt;建立一个test文件夹,里面放一个test.txt,然后分别运行以下两条bat命令: SET GLOG ...

  6. POJ2443 Set Operation (基础bitset应用,求交集)

    You are given N sets, the i-th set (represent by S(i)) have C(i) element (Here "set" isn't ...

  7. MySql必知必会内容导图

    <MySQL必知必会>从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理 ...

  8. fastText入门

    简介fastText是Facebook AI Research在2016年提出的文本分类和词训练的工具.它最大的特点:模型非常简单,训练速度快,并且能够达到与深度学习旗鼓相当的精度. 最近在做一个给微 ...

  9. vue 使用font-awesome 只需两步

    npm 安装font-awesome 以及需要的所有依赖 cnpm install less less-loader css-loader style-loader file-loader font- ...

  10. HTML中的align和valign这两个属性

    转自:https://www.douban.com/note/325833958/ align和valign属性均是规定表格相对于周围元素的对齐方式,区别就在于: 1.align属性趋向于左右对齐,其 ...