90分求助
查看原帖
90分求助
340222
代码练习生楼主2020/7/14 14:45

下载了数据,用例是Yes 330, 我的是Yes,331, 不知道为什么会多一个

#include<stdio.h>

int
main(){
    int M,S,T,cur_d,cur_t,temp;
    
    scanf("%d%d%d",&M,&S,&T);
    
    cur_t=cur_d=0;
    while(cur_t <T && cur_d <S){
        if(M>=10){
            cur_t++;
            cur_d+=60;
            M-=10;           //加减法比乘除法更快,而且后面只要大于等于10就要用一次
        }else{
            temp=(10-M+3)/4;  //3==(4-1),即向上取整
            if(T-cur_t>=temp+1){    //还有一秒的施法时间
                if(temp*17+cur_d>=S){
                    while(cur_d<S){
                        cur_d+=17;
                        cur_t++;
                    }
                }else{
                    M+=temp*4;
                    cur_t+=temp;
                }
            }else{
               while(cur_t<T){
                    cur_d+=17;
                    cur_t++;
                }
            }
        }
    }
    if(cur_d <S){
        printf("No\n");
        printf("%d",cur_d);
    }else{
        printf("Yes\n");
        printf("%d",cur_t);
    }
    return 0;
}
2020/7/14 14:45
加载中...