⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1409.cpp

📁 哈尔滨工业大学ACM 竞赛网上在线试题集锦的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 1409 on 2005-03-12 at 21:07:26 */ 
#include <stdio.h>
#define  sgn(x)  (((x)>0)?1:(-1))

typedef struct{
    int length;
    int number;
}Sequence;

int main()
{
    Sequence sequ[2];
    int sub[30], sequence[31];
    int i, length, zeroLength, upOrDown, flag;
    
    while(1){
        for(i = 0; i < 2; i++){
            sequ[i].length = 0;
            sequ[i].number = 0;
        }    
        zeroLength = 0;
        flag = 0;
        for(length = 0; ; length++){
            scanf("%d", &sequence[length]);
            if(sequence[length] == 0){
                if(length == 0){
                    return 0;
                }else{
                    break;
                }
            }
            if(length > 0){
                sub[length-1] = sequence[length] - sequence[length-1];
                if(sub[length-1] != 0){
                    sub[length-1] = sgn(sub[length-1]);
                }
            }
        }
        printf("Nr values = %d:", length);
        printf("  ");
        for(i = 0; i < length-1; i++){
            if(flag == 0){
                if(sub[i] > 0){
                    flag = 1;
                    upOrDown = 0;
                    sequ[upOrDown].length += zeroLength+1;
                    sequ[upOrDown].number++;
                    zeroLength = 0;
                }else if(sub[i] < 0){
                    flag = 1;
                    upOrDown = 1;
                    sequ[upOrDown].length += zeroLength+1;
                    sequ[upOrDown].number++;
                    zeroLength = 0;
                }else{
                    zeroLength++;
                }
            }else{
                if(sub[i] == 0){
                    zeroLength++;
                }else if((sub[i-1] == 0) && (sub[i] != 0)){
                    sequ[upOrDown].length += zeroLength;
                    zeroLength = 0;
                    if(((upOrDown == 0) && (sub[i] < 0)) || ((upOrDown == 1) && (sub[i] > 0))){
                        upOrDown = 1 - upOrDown;
                        sequ[upOrDown].number++;
                        sequ[upOrDown].length++;
                    }else{
                        sequ[upOrDown].length++;
                    }
                }else if(sub[i-1] * sub[i] > 0){
                    sequ[upOrDown].length++;
                }else if(sub[i-1] * sub[i] < 0){
                    sequ[upOrDown].length += zeroLength;
                    zeroLength = 0;
                    upOrDown = 1 - upOrDown;
                    sequ[upOrDown].length++;
                    sequ[upOrDown].number++;
                }
                if(i == length-2){
                    sequ[upOrDown].length += zeroLength;
                    zeroLength = 0;
                }
            }
        }
        
        if(flag == 0){
            printf("0.000000 0.000000\n");
        }else if(sequ[0].number == 0){
            printf("0.000000 %.6lf\n", (double)sequ[1].length/sequ[1].number);
        }else if(sequ[1].number == 0){
            printf("%.6lf 0.000000\n", (double)sequ[0].length/sequ[0].number);
        }else{
            printf("%.6lf %.6lf\n", (double)sequ[0].length/sequ[0].number, (double)sequ[1].length/sequ[1].number);
        }
    }

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -