您的位置:首页 > 理论基础

2014年王道论坛计算机考研机试全真模拟考试

2016-04-12 08:11 393 查看

题目1553:时钟

题目描述:
给定任意时刻,求时针和分针的夹角(劣弧所对应的角)。

输入:
输入包含多组测试数据,每组测试数据由一个按hh:mm表示的时刻组成。

输出:
对于每组测试数据,输出一个浮点数,代表时针和分针的夹角(劣弧对应的角),用角度表示,结果保留两位小数。

样例输入:
03:00
14:45


样例输出:
90.00
172.50


#include<iostream>
#include<cstdio>
#include<math.h>
using namespace std;
int main()
{
char str[10];
int h,m;
double sum;
while(scanf("%s",str)!=EOF)
{
h=0;
m=0;
for(int i=0;i<=1;i++)
h=h*10+str[i]-'0';
for(int i=3;i<=4;i++)
m=m*10+str[i]-'0';
sum=fabs(5.5*m-30*h);
if(sum>=180)
printf("%0.2lf\n",360-sum);
else
printf("%0.2lf\n",sum);
}
return 0;
}

题目1554:区间问题

题目描述:
给定一个数组,判断数组内是否存在一个连续区间,使其和恰好等于给定整数k。

输入:
输入包含多组测试用例,每组测试用例由一个整数n(1<=n<=10000)开头,代表数组的大小。

接下去一行为n个整数,描述这个数组,整数绝对值不大于100。

最后一行为一个整数k(大小在int范围内)。

输出:
对于每组测试用例,若存在这个连续区间,输出其开始和结束的位置,s,e(s <= e)。

若存在多个符合条件的输出,则输出s较小的那个,若仍然存在多个,输出e较小的那个。

若不存在,直接输出"No"。

样例输入:
5
-1 2 3 -4 9
5
3
-1 2 -3
7
2
-1 1
0


样例输出:
2 3
No
1 2


测试样例通过了,但是WA到没脾气

/*    注意题目描述:接下去一行为n个整数,描述这个数组,整数绝对值不大于100。
判断如果k比连续子数组和的最大值还大,比最小值还小,那么肯定无解了,直接输出No
*/
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int a[10005];
int b[10005];//b[i]表示前i个元素的和
long long CMX(int n)
{
int i,k=0;
long long sum=-100;
for(i=1;i<=n;i++)
{
if(k>0)
k+=a[i];
else
k=a[i];
if(k>sum)
sum=k;
}
return sum;
}
long long  CMN(int n)
{
int i,k=0;
long long sum=100;
for(i=1;i<=n;i++)
{
if(k<0)
k+=a[i];
else
k=a[i];
if(k<sum)
sum=k;
}
return sum;
}
int main()
{
int n,k,flag;
long long sum,max,min;
//freopen("datain.txt","r",stdin);
//   freopen("dataout.txt","w",stdout);
while(cin>>n)
{
sum=0;
flag=0;
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
b[i]=sum;
}
//  for(int j=1;j<=n;j++)
//    cout<<b[j]<<" ";
//cout<<endl;
cin>>k;
//求解最大值
max=CMX(n);
//求解最小值
min=CMN(n);
//cout<<max<<" "<<min<<endl;
if(k<min||k>max)
{
cout<<"No"<<endl;
continue;
}
//利用求解和等于K的序列
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(b[j]-b[i]==k)
{
cout<<i+1<<" "<<j<<endl;
flag=1;
break;

}
}
if(flag)
break;
}
for(int i=1;i<=n;i++)
{
if(b[i]==k)
{
cout<<"1"<<" "<<i<<endl;
flag=1;
break;
}
}
if(!flag)
cout<<"No"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: