Life is short, so we need program

每日一题, 积累从点滴开始

  :: 首页 :: 博问 :: 闪存 :: :: 联系 :: :: 管理 ::

做题地址:

http://acm.hdu.edu.cn/diy/contest_login.php?cid=16636

 

Problem A: HDU1040

排序题,可以直接使用c++提供的排序,如果是JAVA,也可以使用自带的排序方法。C语言需要自己写排序算法。

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int sequence[1005];
int t,n;
int main()
{
    while(scanf("%d",&t)==1){
        while(t--){
            scanf("%d",&n);
            for(int i=0;i<n;i++)
                scanf("%d",&sequence[i]);
            sort(sequence,sequence+n);
            cout<<sequence[0];
            for(int i=1;i<n;i++)
                cout<<" "<<sequence[i];
            cout<<endl;
        }
    }
}

 

 

Problem B: HDU1021

递推

#include <iostream>
using namespace std;
int main()
{
    int n;
    while(cin >> n)
    {
        if(n % 4 == 2)
             cout << "yes/n";
        else
             cout << "no/n";
    }
  return 0;
} 

 

Problem C: HDU2010

绝对值排序

#include<stdio.h>
#include<math.h>
int main()
{
    int n, i, j, a[100], temp;
    while(scanf("%d",&n)&&n!=0)
    {
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        for(i=0;i<n-1;i++)
            for(j=i+1;j<n;j++)
                if(abs(a[i])<abs(a[j]))
                {
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
        for(i=0;i<n-1;i++)
            printf("%d ",a[i]);
        printf("%d/n",a[i]);
    }
    return 1;
}

 

 

Problem D: HDU2010

素数判定

#include<stdio.h>
#include<math.h>
int fun(int n)
 {
     int f=1,i,m;
     m=n*n+n+41;
     for(i=2;i<=sqrt(m);i++)
     {
         if(m%i==0)
         {f=0;break;}
     }
     return f;
 }
 main()
 {
     int a,b,j;
     while(scanf("%d%d",&a,&b)==2,a||b)
     {
         {
         int c,d,k;
         c=a>b?a:b;
         d=a<b?a:b;
         for(j=d;j<=c;j++)
         {
             k=fun(j);
             if(k==0)
                 break;
         }
         printf(k?"OK\n":"Sorry\n");
         }
     }
 }

 

 

Problem E: HDU 2037

简单贪心,不断地选取在一段时间内最先结束的节目,直到一天结束。所以对结束时间排序后,直接选择没有重叠的节目即可。

#include<stdio.h>
#include<stdlib.h>
struct T
{
    int ti_s;
    int ti_e;
}time[100];
int cmp(const void *a,const void *b)
{
    return (*(T *)a).ti_e-(*(T *)b).ti_e;
}
int main()
{
    int n,i,max,sum,bet;
    while(scanf("%d",&n),n)
    {
        max=24;sum=0;
        for(i=0;i<n;i++) 
        {
            scanf("%d%d",&time[i].ti_s,&time[i].ti_e);
        }
        qsort(time,n,sizeof(time[0]),cmp);
        if(time[0].ti_e<=max)
        {
            bet=time[0].ti_e;
            sum++;
            max-=(time[0].ti_e-time[0].ti_s);    
        }
        for(i=0;max>=0&&i<n;i++)
        {
            if(bet<=time[i].ti_s)
            {
                bet=time[i].ti_e;
                sum++;
                max-=(time[i].ti_e-time[i].ti_s);
            }    
        }
        printf("%d\n",sum);
    }
    return 0;
}

 

 

Problem F: hdu 2014

水题,求平均值

#include <stdio.h>
int main()
{
    int n, i;
    float tmp,ans,max,min;
    while(scanf("%d",&n) != EOF)
    {
        scanf("%f", &max);
        min = ans = max;
        for(i=1; i<n; i++)
        {
            scanf("%f", &tmp);
            ans += tmp;
            if(max < tmp)
                max = tmp;
            if(min > tmp)
                min = tmp;
        }
        ans = (ans-max-min)/(n-2);
        printf("%.2f\n", ans);
    }
    return 0;
}

 

 

 

 

Problem G:hdu 1008

简单坐电梯

#include<stdio.h>
int main()
{
   int n,t,rt;
   while(scanf("%d",&n),n)
   {
      int i=0,sum=0;
      rt=0;
      while(i<n)
      {
         scanf("%d",&t);
         if(t>rt)
         {
               sum+=(t-rt)*6+5;
         }
         else if(t<rt)
         {
            sum+=(rt-t)*4+5;
         } 
         else if(t==rt)
         {
            sum+=5;
         }
         rt=t;
         i++;
      }
      printf("%d\n",sum);
   }
   return 0;
} 

 

Problem H:hdu 1076

润年计算问题

#include <iostream>
using namespace std;

int main()
{
    int t,y,n;
    cin>>t;
    while(t--)
    {
        cin>>y>>n;
        for(int i=0;i<n;)
        {
            if(y%4==0&&y%100!=0||y%400==0)
                i++;
            y++;
        }
        cout<<y-1<<endl;
    }
    return 1;

}

 

 

posted on 2012-08-12 19:44  CDU_ICPC  阅读(224)  评论(0编辑  收藏  举报