杭电ACM step(1.2.1-1.2.8)

第一章的第二部分开始开始涉及一些计算


Elevator

#include <stdio.h>

int main()
{
   int N,requestfloor,currentfloor=0,time=0;
   while(scanf("%d",&N) != EOF){
        if(N==0){
            break;
        }else{
       for(int i=0;i<N;i++){
        scanf("%d",&requestfloor);
        if(requestfloor > currentfloor){
            time += (requestfloor-currentfloor) * 6;
        }else{
            time += (currentfloor-requestfloor) * 4;
        }
        currentfloor = requestfloor;
       }
       time += 5*N;
     printf("%d\n",time);
     time = 0;
     currentfloor = 0;
   }
   }
return 0;
}

Biker’s Trip Odometer

#include <stdio.h>
#define PI 3.1415927
int main()
{
   double diameter,time;
   int revolutions,flag=1;
   double res1,res2;
   while(scanf("%lf%d%lf",&diameter,&revolutions,&time) != EOF){
        if(revolutions==0){
            break;
        }else{
            res1 = diameter*PI*revolutions/(12*5280);
            res2 = res1*3600/time;
     printf("Trip #%d: %.2lf %.2lf\n",flag++,res1,res2);
   }
   }
return 0;
}

Text Reverse
( 考察gets()和getchar() )

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

int main(void)
{
    int n, k, l, i, j;
    char a[1000+10];
    while (scanf("%d", &n)!=EOF)
    {
        getchar();
        while (n--)
        {
            gets(a);
            k = l = 0;
            for (i = 0; a[i] != '\0'; ++i)
            {
                if (a[i] == ' ')
                {
                    k = i;
                    for (j = k - 1; j >= l; --j)
                        printf("%c", a[j]);
                    l = k + 1;
                    printf("%c", a[i]);
                }
            }
            for (i = strlen(a) - 1; i >= l; --i)
                printf("%c", a[i]);
            printf("\n");
        }
    }

    return 0;
}

Buildings

#include <stdio.h>

int main()
{
    int T,n,m,num=0,flag;
    while(scanf("%d",&T)!=EOF){
        while(T--){
            scanf("%d%d",&n,&m);
            for(int i=0;i<n*m;i++){
                    scanf("%d",&flag);
                    if(flag ==1){
                        num++;
                    }
            }
            printf("%d\n",num);
            num=0;
        }
    }
return 0;
}

Balloon Comes!

#include <stdio.h>

int main()
{
    int T,n,m;
    double b;
    char c;
    scanf("%d",&T);
        while(T--){
            c=getchar();
            scanf("%c%d%d",&c,&n,&m);
            switch(c){
            case '+': printf("%d\n",n+m);break;
            case '-': printf("%d\n",n-m);break;
            case '*': printf("%d\n",n*m);break;
            case '/': if(n%m==0){printf("%d\n",n/m);break;}b=(double)n/m;printf("%.2f\n",b);break;
            default : break;
            }
        }
return 0;
}

Lowest Bit

#include <stdio.h>

int main()
{
    int n,i,m;
    int a[7];
    while(scanf("%d",&n)!=EOF,n){
        m=1;
        i=0;
        while(n){
            a[i]=n%2;
            n/=2;
            i++;
        }
        for(int j=0;j<7;j++){
           if(a[j]!=1){
            m=m*2;
           }else{
               printf("%d\n",m);
               break;
           }
        }
    }
return 0;
}

Specialized Four-Digit Numbers
(注意一定要写成函数,函数用重写的形式,最后要换行,不然不能AC)

#include <stdio.h>
int ten(int i){
    int a=i%10;
    i/=10;
    a+=i%10;
    i/=10;
    a+=i%10;
    i/=10;
    a+=i%10;
    return a;

}
int twil(int i){
    int b=i%12;
    i/=12;
    b+=i%12;
    i/=12;
    b+=i%12;
    i/=12;
    b+=i%12;
    return b;
}
int six(int i){
    int c=i%16;
    i/=16;
    c+=i%16;
    i/=16;
    c+=i%16;
    i/=16;
    c+=i%16;
    return c;
}
int main()
{
    int i,a=0,b=0,c=0;
for(i=2992;i<10000;i++){
    a=ten(i);
    b=twil(i);
    c=six(i);
    if(a==b && b==c){
            printf("%d\n",i);
    }

}
return 0;
}

Vowel Counting

#include <stdio.h>

int main()
{
int T,i;
scanf("%d",&T);
getchar();
while(T--){
    char word[50] = "\0";
    gets(word);
    for(i=0;i<50;i++){
        if(word[i]=='a' || word[i]=='i' || word[i]=='e' || word[i]=='o' || word[i]=='u'){
            word[i] -= 32;
        }
        if(word[i] >='A' && word[i] <='Z' && word[i]!='A' && word[i]!='I' && word[i]!='E' && word[i]!='O' && word[i]!='U'){
            word[i] += 32;
        }
    }
    printf("%s\n",word);
}
return 0;
}

第二部分的内容相较于第一部分只有简单的A+B来说,难度稍有提升,但是还是非常基础的内容,基本不涉及算法

猜你喜欢

转载自blog.csdn.net/gw_csdn/article/details/86476476
今日推荐