Description
This problem is quiet easy.
Initially, there is a string A.
Then we do the following process infinity times.
A := A + “HUSTACM” + A
For example, if a = “X”, then
After 1 step, A will become “XHUSTACMX”
After 2 steps, A will become “XHUSTACMXHUSTACMXHUSTACMX”
Let A = “X”, Now I want to know the characters from L to R of the final string.
Initially, there is a string A.
Then we do the following process infinity times.
A := A + “HUSTACM” + A
For example, if a = “X”, then
After 1 step, A will become “XHUSTACMX”
After 2 steps, A will become “XHUSTACMXHUSTACMXHUSTACMX”
Let A = “X”, Now I want to know the characters from L to R of the final string.
Input
Multiple test cases, in each test case, there are only one line containing two numbers L and R.
1 <= L <= R <= 10^12
R-L <= 100
1 <= L <= R <= 10^12
R-L <= 100
Output
For each test case, you should output exactly one line which containing the
substring.
Sample Input
5 10
Sample Output
TACMXH
很容易发现,这串字符串是循环的,一眼题。。。。。XHUSTACMXHUSTACMXHUSTACMX
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
char s[]="0XHUSTACM";
typedef long long ll;
int main()
{
ll l,r,i,t;
while(cin>>l>>r) {
for(i=l;i<=r;i++) {
t=i%8;
if(t==0) t=8;
cout<<s[t];
}
cout<<endl;
}
return 0;
}