Description
有一个字符串A,然后执行下面程序
If(A==”X”)
A=”XZCMUACMX”;
While(true)
{
A=A+”ZCMUACM”+A;
}
现在让A=”X”,然后While循环无数次后,求出A在L到R这段区间内的字符串?
Input
多组测试数据,对于每组测试数据都只有一行包含两个整数l,r(1<=l<=r<=10^6,r-l<=100)
Output
对于每组测试数据,输出A的子串。
Sample Input
5 10
Sample Output
UACMXZ
HINT
Source
ACM集训队第三小组第一次组内赛
解题代码:
way1:
#include <stdio.h>
#include <string.h>
int main()
{
char a[300];
memset(a,'\0',sizeof(a));//一定要初始化,否则会出现乱码。
int t = 15;
const char *p = "XZCMUACM";//多写几个就发现这个在循环。
while(t--)
{
strcat(a,p);
}
int L,R,start_a;
while(~scanf("%d%d",&L,&R))
{
if(L % 8 == 0) start_a = 7;
else start_a = L % 8 - 1;
for(int i = start_a; i <=(start_a + R-L); i++)
{
printf("%c",a[i]);
}
printf("\n");
}
return 0;
}
way2:
#include <stdio.h>
int main()
{
char a[10] = "0XZCMUACM";
int L,R;
while(scanf("%d%d",&L,&R)!=EOF)
{
while(L <= R)
{
if(L % 8 == 0)
printf("%c",a[8]);
else printf("%c",a[L%8]);
L++;
}
printf("\n");
}
return 0;
}