输入的第一行包含一个整数T,代表测试数据的组数。接下来是 T 组数据。每组数据仅有一行,首先包含两个字符串S和E,然后包含两个整数L和R。
• 1 ≤ T ≤ 10,000 1 ≤ L ≤ R ≤ 100
• S, E ∈ {“monday”,“tuesday”,“wednesday”,“thursday”,“friday”,“saturday”, “sunday”}
【输出形式】
对于每组数据:
如果不存在满足条件的天数,输出一行“impossible”;
如果存在多个满足条件的天数,输出一行“many”;
否则,输出一行,包含一个整数,代表唯一满足条件的天数。
【样例输入】
3
saturday sunday 2 4
monday wednesday 1 20
saturday sunday 3 5
【样例输出】
2
many
impossible
#include <iostream>
#include <map>
using namespace std;
int main() {
int num=0;
cin>>num;
map<string,int>date;
date["monday"]=0;
date["tuesday"]=1;
date["wednesday"]=2;
date["thursday"]=3;
date["friday"]=4;
date["saturday"]=5;
date["sunday"]=6;
for(int i = 0;i<num;i++)
{
string S,E;
int l,r;
int count=0;
cin>>S>>E>>l>>r;//读入数据
int days=0;
for(int i = l;i<=r;i++)
{
if((date[S]+i-1)%7==date[E])//从date s出发,到date e ,如果能成功到date e,则说明可行
//这里的i从最小的天数l开始到最大的天数r
{
count++;//表示满足的天数
days=i;
}
}
if(count==1)
{
cout<<days<<endl;
}
if(count==0)
{
cout<<"impossible"<<endl;
}
if(count>1)
{
cout<<"many"<<endl;
}
}
return 0;
}