提高赛1

emmm只能做出a题和k题

还是太菜了

一开始a题题意没看懂

其实就是加起来等于1;

求乘积最大

其实就只有两种情况了

#include <stdio.h>
#include <math.h>
#include <string.h>
int main(){
    int a,b,t,hour,min,stanh,flag,flag1;
    double u;
    char c[5];
    while(scanf("%d",&t)!=EOF){
        while(t--){
            scanf("%d %d UTC%s",&a,&b,c);
            int len=strlen(c);
            stanh=a-8;//utc+0时的时间:   a-8 : b
            if(len==2){
                if(c[0]=='+'){
                    hour=stanh+c[1]-'0';
                    min=b;
                }
                else{
                    hour=stanh-(c[1]-'0');
                    min=b;
                }
               }
            else if(len==3){
                if(c[0]=='+'){
                    hour=stanh+(c[1]-'0')*10+(c[2]-'0');
                    min=b;
                }
                else{
                    hour=stanh-(c[1]-'0')*10-(c[2]-'0');
                    min=b;
                }
            }
            else if(len==4){
                if(c[0]=='+'){
                    hour=stanh+c[1]-'0';
                    min=b+(c[3]-'0')*6;
                }
                else{
                    hour=stanh-(c[1]-'0');
                    min=b-(c[3]-'0')*6;
                }
            }
            else if(len==5){
                if(c[0]=='+'){
                    hour=stanh+(c[1]-'0')*10+(c[2]-'0');
                    min=b+(c[4]-'0')*6;
                }
                else{
                    hour=stanh-(c[1]-'0')*10-(c[2]-'0');
                     min=b-(c[4]-'0')*6;
                }
            }
            if(min<0){
                min+=60;
                hour-=1;
            }
            else if(min>59){
                min-=60;
                hour+=1;
            }

            if(hour<0){
                hour+=24;
            }
            else if(hour>=24){
                hour-=24;
            }

            printf("%02d:%02d\n",hour,min);



        }
}    }

然后k题

有多种考虑情况,比较麻烦

#include <stdio.h>
#include <math.h>
#include <string.h>
int main(){
    int a,b,t,hour,min,stanh,flag,flag1;
    double u;
    char c[5];
    while(scanf("%d",&t)!=EOF){
        while(t--){
            scanf("%d %d UTC%s",&a,&b,c);
            int len=strlen(c);
            stanh=a-8;//utc+0时的时间:   a-8 : b
            if(len==2){
                if(c[0]=='+'){
                    hour=stanh+c[1]-'0';
                    min=b;
                }
                else{
                    hour=stanh-(c[1]-'0');
                    min=b;
                }
               }
            else if(len==3){
                if(c[0]=='+'){
                    hour=stanh+(c[1]-'0')*10+(c[2]-'0');
                    min=b;
                }
                else{
                    hour=stanh-(c[1]-'0')*10-(c[2]-'0');
                    min=b;
                }
            }
            else if(len==4){
                if(c[0]=='+'){
                    hour=stanh+c[1]-'0';
                    min=b+(c[3]-'0')*6;
                }
                else{
                    hour=stanh-(c[1]-'0');
                    min=b-(c[3]-'0')*6;
                }
            }
            else if(len==5){
                if(c[0]=='+'){
                    hour=stanh+(c[1]-'0')*10+(c[2]-'0');
                    min=b+(c[4]-'0')*6;
                }
                else{
                    hour=stanh-(c[1]-'0')*10-(c[2]-'0');
                     min=b-(c[4]-'0')*6;
                }
            }
            if(min<0){
                min+=60;
                hour-=1;
            }
            else if(min>59){
                min-=60;
                hour+=1;
            }

            if(hour<0){
                hour+=24;
            }
            else if(hour>=24){
                hour-=24;
            }

            printf("%02d:%02d\n",hour,min);

        }
}    }

今日开始flag,上午学pat争取五道题,下午独立做出训练赛,晚上总结加刷题吧!!!

猜你喜欢

转载自blog.csdn.net/qq_42232118/article/details/81338110
今日推荐