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争取五道题,下午独立做出训练赛,晚上总结加刷题吧!!!