题目描述

总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文。(参看洛谷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=0;
int cnt=0,ans=0;
int la=0,now=16;
int main()
{scanf("%d%d\n",&n,&t);    while (cin>>c){if (c==' '||c=='\n')    now=16;    else        if (c=='(')    now/=2;     else if (c==')')        now*=2;        else if (c=='.')    cnt+=now/2;        else if (c=='-'){cnt+=now;la++;}else                cnt+=now;        }t*=16; ans=cnt*60/t;cout<<ans;return 0;
} 

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

#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=1;
int main()
{scanf("%d%d",&n,&t);scanf("%c",&c);for(int i=1;i<=10009;i++){if(nn==n)    break;scanf("%c",&c);if(c>='0'&&c<='9')    {tot+=last;continue;}if(c==' '||c=='\n'){last=1;if(c=='\n')    nn++;continue;}if(c=='('){last/=2;continue;}if(c==')'){last*=2;continue;}if(c=='.')    {tot+=last/2;continue;}if(c=='-'){tot++;last=1;continue;}tot+=last;}tot=(double)tot/(t/60);cout<<tot;return 0;
} 

转载于:https://www.cnblogs.com/CLGYPYJ/p/7327421.html

P2614 计算器弹琴相关推荐

  1. 洛谷 P2614 计算器弹琴

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

  2. 用计算机弹的软件,你试过用计算器弹琴吗?好玩的音乐计算器App

    原标题:你试过用计算器弹琴吗?好玩的音乐计算器App [PConline 资讯]很多人都玩过会发音的那种计算器,发音计算器每一个按键都有不同的音调,例如狂按2222有惊喜,很多人都有过用计算器来弹琴的 ...

  3. P2614 计算机弹琴

    https://www.luogu.org/problem/show?pid=2614 这是一道模拟题,就是细节有点多. 首先,括号里没有 - ,所以是 - 时,直接当成音符处理,又因为没有超过4个节 ...

  4. 李宇春的歌用计算机弹,计算器当钢琴玉米弹出李宇春5首歌曲(组图)

    微博爆红的计算器弹琴视频截图. 计算器也能当钢琴弹 计算器可以用来做什么?当然是计算数据.如果实在结实,也许能用来砸核桃.但网友"玉米葱花粥"手中的计算器,还可以当钢琴用.近日,& ...

  5. 鹿晗歌曲计算机弹奏,微博之夜看点:贾玲抱肖战,郎朗用计算机弹琴,肖战为杨紫提裙...

    原标题:微博之夜看点:贾玲抱肖战,郎朗用计算机弹琴,肖战为杨紫提裙 微博之夜星星聚集在一起闪闪发光,所有的明星都向观众展示了最美丽最帅的一面,红毯表演的一环是必不可少的,每个人为了博眼球笑容闪闪发光, ...

  6. webgl学习六 纹理贴图

    <html><head><title>纹理贴图</title><script type="text/javascript" s ...

  7. 【洛谷月赛】洛谷11月月赛·Day1

    洛谷2614 计算器弹琴 本题地址: http://www.luogu.org/problem/show?pid=2614 题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参 ...

  8. 手把手教你用 wxPython 设计一个可以弹琴的计算器

    文章目录 1. 前言 2. 桌面程序设计的通用框架 3. 了解事件驱动,探索鼠标事件及其绑定 4. 最原始的计算器 5. 更漂亮的计算器 6. 给漂亮的计算器加上声音 7. 打包成.exe文件 8. ...

  9. 体面 用计算机弹调子,怎么把计算器调成音符

    1.如何设置计算器成钢琴 按两次"时间/日期"按键,就可以弹奏了. 必须是那种按键带有音调的计算器才可以弹奏出音乐,其它的则不可以. 用计算器弹奏音乐和用其他乐器弹奏音乐道理是一致 ...

最新文章

  1. Kinesis、Streams and Firehose
  2. WPF ComboBox_SelectionChange事件中获取当前文本的方法
  3. db2 日期英式写法_《学霸英语》16:美国人和英国人“表达日期”,差距竟然这么大!...
  4. JAVA基础——时间Date类型转换
  5. windows查看dll接口
  6. mysql 变量定义和赋值_MySQL变量解析
  7. 用 label 控制 Pod 的位置 - 每天5分钟玩转 Docker 容器技术(128)
  8. 时序数据库InfluxDB 2.0 alpha 发布:主推新的Flux查询语言,TICK栈将成为整体
  9. [置顶] Android代码-----检测手机耳机插拔
  10. nginx proxy_pass cannot have URI part in location given by regular expression
  11. PHP版本中的VC6,VC9,VC11,TS,NTS区别
  12. 如何在word中找到标准偏差σ、α、β、δ等数学公式符号和物理公式符号
  13. PCB安规设计是怎样的?怎样设计高压电源的安规?ECM设计间距是怎样的,CAF设计间距要求是怎样的?电源的PCB间距设计指南,安规标准有哪些?380V电源安规设计
  14. 剑网3最新服务器哪个人多,狂欢夜178万剑网3玩家挤爆服务器 新赛季玩家自觉排队做任务...
  15. nodeJS实现简单网页爬虫功能
  16. Java设计模式面试题(一)
  17. 如何有效的对云专线进行测速
  18. Android学习之RecyclerView带刺的玫瑰
  19. Java 将小写的数字转换成对应的大写的汉字数字
  20. fiddler安卓模拟器与ios手机抓包

热门文章

  1. 水位报警仪电极式传感器感知水位分级式水位监测
  2. 猴子偷桃问题(C语言实现)
  3. Mybatis xml中SQL处理小于号与大于号
  4. 电视剧《恋爱先生》观影感悟
  5. Java Label
  6. Android获取设备信息(二)
  7. persevere的用法_词汇精选:persist的用法和辨析
  8. class--杂项(一)
  9. String类的intern()方法详解
  10. 2018今日头条秋招 笔试 (2017/09/10)