3057 - 学姐去学车
趁着放假,学姐去学车好带学弟去兜风。但是学车真的很辛苦,每天五点半就要起床赶班车,但是学姐的教练更辛苦,他们要相同的时间到而且日日如此。于是温柔的学姐关切的问了他们的休息情况,教练告诉她,他们两个人倒班教学姐,每个教练每上n天班就会放一天假,如果一个教练放假,就由另一个教练来代课,一直代课到自己放假再换人。 现在学姐想知道,每一天是哪个教练给她上课。
Input
输入开始为数据组数T(T≤10),接下来T组输入,第一行为n,m,我们假设第一天教学姐的是教练1,而且他教学姐的前一天刚刚放完假,教练2则会在学姐上课的第m天放假,1≤m≤n 以保证每天都有教练教学姐。接下一行为q(q≤103),即询问次数,接着q行,每行ti表示学姐想问哪天的教练是谁。因为教练们非常非常厉害,而且学姐不知道自己到底会花多久学完车,你的程序要处理的n,m,ti上限为109。
Output
对于每个询问ti,输出一行,1或2代表当天的教练。
<span style="line-height:1.5;"></span>
Examples
Input
1 5 3 3 6 9 13
Output
2 1 2
Solution C
#include<stdio.h> int main() { int T,m,n,p,q,i,day; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); scanf("%d",&q); for(i=q;i>0;i--) { scanf("%d",&day); if(day<=n) { printf("1\n"); } if(day>n) { p=day%(n+1); if(p>=m) printf("1\n"); else printf("2\n"); } } } return 0; }
Solution C++
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int num[111111]; int main() { int T; scanf("%d",&T); while(T--) { int n,m; scanf("%d%d",&n,&m); int oneZero=n+1; int oneShi=m+n+1; int relativeShi_one=oneShi-oneZero; int twoZero=m; int twoShi=n+1; int relativeShi_two=twoShi-twoZero; int len=n+1; int quesnum;scanf("%d",&quesnum); int ques; for(int i=1;i<=quesnum;i++) { scanf("%d",&ques); if(ques<=n) { printf("1\n"); continue; } int inONE=(ques-n-1)%len; int inTWO=(ques-m)%len; if(inONE==0) printf("2\n"); else if(inONE<relativeShi_one) printf("2\n"); else printf("1\n"); } } return 0; }