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
#include <iostream> #include<cstdio> #include<string> #include<cmath> #include<vector> #include<iostream> #include<stack> #include<map> #include<algorithm> using namespace std; int main() { long long int len,r,i,j,l; char a[9]={'X','X','H','U','S','T','A','C','M'}; while(cin>>l>>r) { len=r-l+1; l=l%8; if(l==0)l=8; for(i=1;i<=len;i++){ cout<<a[l]; l=l%8+1; } cout<<endl; } return 0; }
。。。。至今下面的也没法ac。。。。。。。。。。。。。。。。。。。。。
#include <iostream> #include<cstdio> #include<string> #include<cmath> #include<vector> #include<iostream> #include<stack> #include<map> #include<algorithm> using namespace std; int main() { int l,r,i,j,k; char a[9]={'X','H','U','S','T','A','C','M'}; while(cin>>l>>r) { if(l%8==0){ cout<<'M'; for(i=1;i<=(r-l);i++){ if(i%8==0)cout<<a[7]; else cout<<a[(i%8)-1]; } } else{ if(r<=8){ for(i=l%8;i<=r;i++){ cout<<a[i-1];} } else{ for(i=l%8;i<=8;i++){ cout<<a[i-1];} for(i=1;i<=(r-l-(8-(l%8)));i++){ if(i%8==0)cout<<a[7]; else{ cout<<a[(i%8)-1];} } } } cout<<endl; } return 0; }