这是长沙网络赛水题了,上完课回来做的,思路是把日期移动到以星期1开始,然后以七天路程为一个周期长度,进行计算,开始想得太过简单直接超时了,按这样改了之后就A了。
#include<cstdio>
#include<cstring>
const double eps=1e-8;
int dlcmp (double x) {return x<-eps?-1:x>eps;}int main(){char ch[20];double s,L;int start;while(scanf("%s",ch)!=EOF){if(strcmp(ch,"Sunday")==0)start=0;if(strcmp(ch,"Monday")==0)start=1;if(strcmp(ch,"Tuesday")==0)start=2;if(strcmp(ch,"Wednesday")==0)start=3;if(strcmp(ch,"Thursday")==0)start=4;if(strcmp(ch,"Friday")==0)start=5;if(strcmp(ch,"Saturday")==0)start=6;scanf("%lf %lf",&L,&s);if(start==0||start==6)L-=s*4;else if(start!=1)L-=s*8;while(dlcmp(L)>0&&start!=1){start=(start+1)%7;if(start==0||start==6)L-=s*4;else if(start!=1)L-=s*8; }if(dlcmp(L)<0){if(start==0)printf("Sundayn");if(start==1)printf("Mondayn");if(start==2)printf("Tuesdayn");if(start==3)printf("Wednesdayn");if(start==4)printf("Thursdayn");if(start==5)printf("Fridayn");if(start==6)printf("Saturdayn");}else{double len=48*s;double temp=L/len;int tem=(int)temp;L = L-tem*len; if(start==0||start==6)L-=s*4;else L-=s*8;while(dlcmp(L)>0){start=(start+1)%7;if(start==0||start==6)L-=s*4;else L-=s*8; }if(start==0)printf("Sundayn");if(start==1)printf("Mondayn");if(start==2)printf("Tuesdayn");if(start==3)printf("Wednesdayn");if(start==4)printf("Thursdayn");if(start==5)printf("Fridayn");if(start==6)printf("Saturdayn");}}return 0;
}
本文发布于:2024-01-30 15:27:45,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170659966620984.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |