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

来源:互联网 发布:异步加载js的方法 编辑:程序博客网 时间:2024/04/30 19:59

题目1553:时钟

题目描述:

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

输入:

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

输出:

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

样例输入:
03:0014:45
样例输出:
90.00172.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 953-1 2 -372-1 10
样例输出:
2 3No1 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;}





0 0
原创粉丝点击