北京航空航天大学2014第三次上机解题报告
2014-11-03 18:02
309 查看
2014第三次上机解题报告~
第一题:初见杀
ProblemDescription
Last_Day买了很多猫粮。
猫粮跟狗粮有很大区别。
狗粮是长这样的:
#
###
#####
猫粮是长这样的
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
请你帮Last_Day摆放猫粮。
(请不要好奇为什么Last_Day要买猫粮,他最近收养了一只吃东西比较奇怪的羚羊而已。)
Input
输入多组数据。
每组数据只有一行,为一个正整数n(n为奇数且不超过51)。
Output
输出对应菱形,见样例。
SampleInput
1
3
SampleOutput
A
A
ABA
A
Hint
初见杀
这道题如果没记错的话是2013年第四次练习里的,做过一遍,于是思路上来就有了,用了一个字符串,就把这个问题解决了~~
代码如下
欢迎,14211065,[0条未读站内信
]|退出
首页
题目
赛事
小组
测试机
测试脚本
帮助
用户
编程啦
服务器时间(GMT+8):
2014-11-0317:13:31
第二题:不要不要合唱比赛
ProblemDescription
jhljx最近参加了合唱比赛,和大家一起取得了好成绩。但是jhljx比较笨,不会合唱,唱的特别烂。。
他决定好好学学,于是他就去找了度娘,发现。。哇噻~~~音乐方面的知识好多吖。。
可是他是一个小白,什么都不会。
在找度娘的过程中,他发现了以下资料,在这里和大家分享。
下面就根据上面他找到的这些资料来解决问题啦。相信你会很开心吧。因为他开始学音乐了。
首先,他先假定音符中的do,re,mi,fa,so,la,si分别对应1,2,3,4,5,6,7。当然音符也是有音高的,有高八度,低八度之分。
音符上边加一个点,表示高8度,音符下面加一个点,表示低八度。低八度的音符表示为A,B,C,D,E,F,G(分别与1,2,3,4,5,6,7对应),
高八度的音符表示为H,I,J,K,L,M,N(分别与1,2,3,4,5,6,7对应)。
一个音符如"5"表示4分音符,是1拍;一个音符如"5-"表示二分音符,是2拍,一个音符如"5-
--"(5后边跟3个短横线,没有空格)表示全音符,是4拍。
一个音符如"5_"表示8分音符,'_'是1/2拍,一个音符如"5="(5后边是等号)表示16分音符,"="是1/4拍。
请你计算一段音乐的时值是多少(即总共需要几拍)。
Input
输入一组数据。
每组数据为一段音乐。(保证音乐的字符为1,2,3,4,5,6,7,A,B,C,D,E,F,G,H,I,J,K,L,M,N中的字符,不包含不合法字符)
Output
输出这段音乐的时值是多少。如果结果为整数,输出一个整数,如果结果为分数,用a/b的形式输出并保留最简分数形式。(保证结果合法,不用进行不合法判断)
SampleInput
A12---H_3=1321-1421
SampleOutput
71/4
Hint
A12H313211421这是13个数,每个1拍,是13拍。-为1拍,总共4个。。现在17拍。_为1/2拍,=为1/4拍。总共为17+3/4拍,即71/4拍。
这个题,也就是真心百思不得其解的问题,我对于C++中字符输入的终止条件一直很不明确,所以。。。这道题用正常的检验方式不敢交
在我的编译器编译之后是这样的
也就是enter之后不会有什么变化。。。但是如果这样:“先输入要输入的,比如:”1234”,输入enter,然后输入”control+Z”,然后再”enter”。
然后就出结果啦~~
不过这道题。。。很悲伤地没敢交,于是只能4分了。。。
代码如下~:
#include<iostream>
usingnamespacestd;
intmain()
{
inta=0,b=0,d=0,sum;
charc;
while(cin>>c)
{
if(c=='_')
{
a++;
}
elseif(c=='=')
{
b++;
}
else
{
d++;
}
}
sum=d*4+a*2+b;
if(sum%4==0)
{
cout<<sum/4<<endl;
}
elseif(sum%2==0)
{
cout<<sum/2<<"/"<<"2"<<endl;
}
else
{
cout<<sum<<"/"<<"4"<<endl;
}
}
0羊会给大家带来好运,相信你能解决这个问题。
每组数据只有一行,为两个正整数n和m(1<=n,m<=100)。
取模运算时尽可能边加边取模,边乘边取模。
注意当一个数为负数时,应该使用ans=((ans+sum)%mod+mod)%mod;的形式来将取模的值变为正数。
这个题貌似是很水的。。。而且学长都讲了,只不过评测出了点小问题。。。所以。。。直接贴代码~
#include<iostream>
usingnamespacestd;
intmain()
{
intn,m;
while(cin>>n>>m)
{
intsum1=0,sum2=0,k1=1,k2=1;
for(inti=1;i<=n;i++)
{
k1=k1*(2*i+1)%10007;
sum1=(sum1+k1)%10007;
}
for(intj=1;j<=m;j++)
{
k2=k2*(2*j)%10007;
sum2=(sum2+k2)%10007;
}
cout<<sum1-sum2<<endl;
}
}
肿么可以这样。。
松辰学妹对jhljx说不要不要丧心病狂。。jhljx说我给你出一道题,你要是答对了,你就赢了。。
松辰学妹说这还不简单啊。。
于是jhljx给了松辰学妹一个长度为n的数列A1,A2,A3……An。他说你能找出这个序列中a[i]-a[j]的最大值吗(保证i<j)?
松辰学妹说用数组啊。。jhljx说,没学数组,不准用。。用了你就跪了。。
松辰学妹说好吧。。这可怎么办呢?
嗯。。松辰学妹正在思考中。。让我们大家一起来帮帮他吧。。
卖个萌。。~\(≧▽≦)/~啦啦啦
每组数据两行,第一行是一个正整数n(2<=n<=1000000)。第二行是n个数,每个数之间用空格隔开。保证这些数在int范围内。
10020
PS:这道题没有去刻意卡内存。。
这个题也很水,学长。。。也给讲了。。。
这个题最有可能的错误是初始设定的最大值为0,所以导致负数计算时出现问题
代码。。。
#include<iostream>
usingnamespacestd;
intmain()
{
intn;
while(cin>>n)
{
inta,b,max1=-10000000;
cin>>a;
for(inti=1;i<n;i++)
{
cin>>b;
if(a-b>=0)
{
if(a-b>max1)
{
max1=a-b;
}
}
else
{
if(a-b>max1)
{
max1=a-b;
}
a=b;
}
}
cout<<max1<<endl;
}
}
第五题:英语杀。。。(真心英语杀)
这道题,最考验的就是英语。。。作为一名英语渣。。。学长的讲解简直如沐春风。。。
知道了意思后做题就很简单了。。。
代码如下
#include<iostream>
usingnamespacestd;
intmain()
{
intn;
cin>>n;
for(inti=1;i<=n;i++)
{
intm,a=0;
cin>>m;
for(intj=1;j<=m;j++)
{
intc;
cin>>c;
if(c%3==0)
{
a++;
}
}
if(a==m)
{
cout<<"Case#"<<i<<":Yes"<<endl;
}
else
{
cout<<"Case#"<<i<<":No"<<endl;
}
}
}
总之就是,本次整体上机题目不很难,就是题目或冗长或复杂,或者完全是英语。。。
所以没能做五道题很遗憾。。。
希望自己下次努力吧~!!
(在原题中有些地方有图,这里没有图了,想看题目也可以登录acm.buaa.edu.cn查找,谢谢大家)
2014第三次上机解题报告~
第一题:初见杀
ProblemDescription
Last_Day买了很多猫粮。
猫粮跟狗粮有很大区别。
狗粮是长这样的:
#
###
#####
猫粮是长这样的
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
请你帮Last_Day摆放猫粮。
(请不要好奇为什么Last_Day要买猫粮,他最近收养了一只吃东西比较奇怪的羚羊而已。)
Input
输入多组数据。
每组数据只有一行,为一个正整数n(n为奇数且不超过51)。
Output
输出对应菱形,见样例。
SampleInput
1
3
SampleOutput
A
A
ABA
A
Hint
初见杀
这道题如果没记错的话是2013年第四次练习里的,做过一遍,于是思路上来就有了,用了一个字符串,就把这个问题解决了~~
代码如下
#include<iostream>
#include<cstring>
usingnamespacestd;
intmain()
{
stringa="XABCDEFGHIJKLMNOPQRSTUVWXYZ";
intn;
while(cin>>n)
{
inti;
for(i=1;i<=(n+1)/2;i++)
{
intcounter;
for(counter=1;counter<=(n+1)/2;counter++)
{
if(counter<=(n+1)/2-i||counter>=(n+1)/2+i)
{
cout<<"";
}
else
{
cout<<a[counter+i-(n+1)/2];
}
}
counter=counter-2;
for(;counter>0;counter--)
{
if(counter<=(n+1)/2-i||counter>=(n+1)/2+i)
{
cout<<"";
}
else
{
cout<<a[counter+i-(n+1)/2];
}
}
cout<<endl;
}
i=i-2;
for(;i>0;i--)
{
intcounter;
for(counter=1;counter<=(n+1)/2;counter++)
{
if(counter<=(n+1)/2-i||counter>=(n+1)/2+i)
{
cout<<"";
}
else
{
cout<<a[counter+i-(n+1)/2];
}
}
counter=counter-2;
for(;counter>0;counter--)
{
if(counter<=(n+1)/2-i||counter>=(n+1)/2+i)
{
cout<<"";
}
else
{
cout<<a[counter+i-(n+1)/2];
}
}
cout<<endl;
}
}
}
欢迎,14211065,[
]|
服务器时间(GMT+8):
2014-11-0317:13:31
第二题:不要不要合唱比赛
ProblemDescription
jhljx最近参加了合唱比赛,和大家一起取得了好成绩。但是jhljx比较笨,不会合唱,唱的特别烂。。
他决定好好学学,于是他就去找了度娘,发现。。哇噻~~~音乐方面的知识好多吖。。
可是他是一个小白,什么都不会。
在找度娘的过程中,他发现了以下资料,在这里和大家分享。
下面就根据上面他找到的这些资料来解决问题啦。相信你会很开心吧。因为他开始学音乐了。
首先,他先假定音符中的do,re,mi,fa,so,la,si分别对应1,2,3,4,5,6,7。当然音符也是有音高的,有高八度,低八度之分。
音符上边加一个点,表示高8度,音符下面加一个点,表示低八度。低八度的音符表示为A,B,C,D,E,F,G(分别与1,2,3,4,5,6,7对应),
高八度的音符表示为H,I,J,K,L,M,N(分别与1,2,3,4,5,6,7对应)。
一个音符如"5"表示4分音符,是1拍;一个音符如"5-"表示二分音符,是2拍,一个音符如"5-
--"(5后边跟3个短横线,没有空格)表示全音符,是4拍。
一个音符如"5_"表示8分音符,'_'是1/2拍,一个音符如"5="(5后边是等号)表示16分音符,"="是1/4拍。
请你计算一段音乐的时值是多少(即总共需要几拍)。
Input
输入一组数据。
每组数据为一段音乐。(保证音乐的字符为1,2,3,4,5,6,7,A,B,C,D,E,F,G,H,I,J,K,L,M,N中的字符,不包含不合法字符)
Output
输出这段音乐的时值是多少。如果结果为整数,输出一个整数,如果结果为分数,用a/b的形式输出并保留最简分数形式。(保证结果合法,不用进行不合法判断)
SampleInput
A12---H_3=1321-1421
SampleOutput
71/4
Hint
A12H313211421这是13个数,每个1拍,是13拍。-为1拍,总共4个。。现在17拍。_为1/2拍,=为1/4拍。总共为17+3/4拍,即71/4拍。
这个题,也就是真心百思不得其解的问题,我对于C++中字符输入的终止条件一直很不明确,所以。。。这道题用正常的检验方式不敢交
在我的编译器编译之后是这样的
也就是enter之后不会有什么变化。。。但是如果这样:“先输入要输入的,比如:”1234”,输入enter,然后输入”control+Z”,然后再”enter”。
然后就出结果啦~~
不过这道题。。。很悲伤地没敢交,于是只能4分了。。。
代码如下~:
#include<iostream>
usingnamespacestd;
intmain()
{
inta=0,b=0,d=0,sum;
charc;
while(cin>>c)
{
if(c=='_')
{
a++;
}
elseif(c=='=')
{
b++;
}
else
{
d++;
}
}
sum=d*4+a*2+b;
if(sum%4==0)
{
cout<<sum/4<<endl;
}
elseif(sum%2==0)
{
cout<<sum/2<<"/"<<"2"<<endl;
}
else
{
cout<<sum<<"/"<<"4"<<endl;
}
}
第三题:不要不要数列求和
ProblemDescription
给你一个公式f(n,m)=(3!!+5!!+……+(2*n+1)!!)-(2!!+4!!+……+(2*m)!!),求公式的值。结果对10007取模。0羊会给大家带来好运,相信你能解决这个问题。
Input
输入多组数据。每组数据只有一行,为两个正整数n和m(1<=n,m<=100)。
Output
输出公式的结果。SampleInput
11SampleOutput
1Hint
!!表示双阶乘。(2*n)!!=2*4*6*……*(2*n)。(2*n+1)!!=1*3*5*……(2*n+1)。取模运算时尽可能边加边取模,边乘边取模。
注意当一个数为负数时,应该使用ans=((ans+sum)%mod+mod)%mod;的形式来将取模的值变为正数。
这个题貌似是很水的。。。而且学长都讲了,只不过评测出了点小问题。。。所以。。。直接贴代码~
#include<iostream>
usingnamespacestd;
intmain()
{
intn,m;
while(cin>>n>>m)
{
intsum1=0,sum2=0,k1=1,k2=1;
for(inti=1;i<=n;i++)
{
k1=k1*(2*i+1)%10007;
sum1=(sum1+k1)%10007;
}
for(intj=1;j<=m;j++)
{
k2=k2*(2*j)%10007;
sum2=(sum2+k2)%10007;
}
cout<<sum1-sum2<<endl;
}
}
第四题:不要不要丧心病狂
ProblemDescription
jhljx又决定来出题了,上次上机以后有人说他是黑心学长,,噗。。。肿么可以这样。。
松辰学妹对jhljx说不要不要丧心病狂。。jhljx说我给你出一道题,你要是答对了,你就赢了。。
松辰学妹说这还不简单啊。。
于是jhljx给了松辰学妹一个长度为n的数列A1,A2,A3……An。他说你能找出这个序列中a[i]-a[j]的最大值吗(保证i<j)?
松辰学妹说用数组啊。。jhljx说,没学数组,不准用。。用了你就跪了。。
松辰学妹说好吧。。这可怎么办呢?
嗯。。松辰学妹正在思考中。。让我们大家一起来帮帮他吧。。
卖个萌。。~\(≧▽≦)/~啦啦啦
Input
输入多组数据。每组数据两行,第一行是一个正整数n(2<=n<=1000000)。第二行是n个数,每个数之间用空格隔开。保证这些数在int范围内。
Output
输出满足条件的最大值。SampleInput
210020
SampleOutput
80Hint
这道题尽量不要用数组,因为没有学。不用数组完全可以做。PS:这道题没有去刻意卡内存。。
这个题也很水,学长。。。也给讲了。。。
这个题最有可能的错误是初始设定的最大值为0,所以导致负数计算时出现问题
代码。。。
#include<iostream>
usingnamespacestd;
intmain()
{
intn;
while(cin>>n)
{
inta,b,max1=-10000000;
cin>>a;
for(inti=1;i<n;i++)
{
cin>>b;
if(a-b>=0)
{
if(a-b>max1)
{
max1=a-b;
}
}
else
{
if(a-b>max1)
{
max1=a-b;
}
a=b;
}
}
cout<<max1<<endl;
}
}
第五题:英语杀。。。(真心英语杀)
这道题,最考验的就是英语。。。作为一名英语渣。。。学长的讲解简直如沐春风。。。
知道了意思后做题就很简单了。。。
代码如下
#include<iostream>
usingnamespacestd;
intmain()
{
intn;
cin>>n;
for(inti=1;i<=n;i++)
{
intm,a=0;
cin>>m;
for(intj=1;j<=m;j++)
{
intc;
cin>>c;
if(c%3==0)
{
a++;
}
}
if(a==m)
{
cout<<"Case#"<<i<<":Yes"<<endl;
}
else
{
cout<<"Case#"<<i<<":No"<<endl;
}
}
}
总之就是,本次整体上机题目不很难,就是题目或冗长或复杂,或者完全是英语。。。
所以没能做五道题很遗憾。。。
希望自己下次努力吧~!!
(在原题中有些地方有图,这里没有图了,想看题目也可以登录acm.buaa.edu.cn查找,谢谢大家)
相关文章推荐
- 北京航空航天大学2014第二次上机解题报告
- 北京航空航天大学2014第五次上机解题报告
- 北京航空航天大学2014第六次上机解题报告
- 北京航空航天大学2014第四次上机解题报告
- 2013级数据结构第三次上机解题报告
- 【作业解答】第三次上机作业解题报告
- 15级算法第三次上机解题报告
- 北京航空航天大学 2008年复试上机题 解题报告
- 北京航空航天大学 2009年复试上机题 解题报告
- 16级C++第三次上机解题报告
- 北京航空航天大学 2012年复试上机题 解题报告
- 2016级计算机C++助教工作(11) 第三次上机解题报告
- 15级算法第二次上机解题报告
- codeforces Coder-Strike 2014 Round 1 A题解题报告
- 2014百度之星资格赛解题报告:Labyrinth
- 第三次训练题解题报告
- 清华大学2007年复试上机题 解题报告
- 2014百度之星资格赛解题报告:Disk Schedule
- 【百度之星2014~初赛解题报告】
- NOIP2014普及组复赛子矩阵解题报告