B3176 50pts?
  • 板块题目总版
  • 楼主阿哲朗读
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/6/20 17:20
  • 上次更新2023/11/3 13:30:36
查看原帖
B3176 50pts?
513326
阿哲朗读楼主2023/6/20 17:20
#include<bits/stdc++.h> 
using namespace std;
int main()
{
	string s;
	int a,b,k[10]={1,1,1,1,1,1,1,1,1,1},time;
	char ch[10][10]={{' ',' ',' ','A',' ',' ',' '},
					 {' ',' ','B','C','D',' ',' '},
					 {' ','E','F','G','H','I',' '},
					 {'J','K','L','M','N','O','P'}};
	cin>>s>>a>>b;
	for(int i=1;i<s.length();i+=2)
	{
		k[s[i]-'0']=s[i]-'0';
	}
	time=k[1]*k[3]*k[5]*k[7];
	int rest=1;
	while(b>1)
	{
		if(b%2) rest=rest*a%time;
		a*=a;
		a%=time;
		b/=2;
	}
	int p=a*rest%time;
	for(int i=1;i<=p;i++)
	{
		for(int i=0;i<s.length();i+=2)
		{
			if(i%2==0)
			{
				if(s[i]=='U')
				{
					int tt=s[i+1]-'0';
					char t1;
					int x=3,y=tt-2;
					t1=ch[x][y+1];
					ch[x][y+1]=ch[(7-tt)/2][3-(7-tt)/2]; 
					while(x>=(7-tt)/2&&y>=3-(7-tt)/2)
					{
						if((x+y)%2==0)
						{
							char t=ch[x][y];
							ch[x][y]=t1;
							t1=t;
							x-=1;
						}
						else
						{
							char t=ch[x][y];
							ch[x][y]=t1;
							t1=t;
							y-=1;
						}
					}
				}
				else if(s[i]=='D')
				{
					int tt=s[i+1]-'0';
					char t1;
					int x=(7-tt)/2+1,y=3+(7-tt)/2;
					t1=ch[x-1][y];
					ch[x-1][y]=ch[3][7-tt]; 
					while(x<=3)
					{
						if((x+y)%2==0)
						{
							char t=ch[x][y];
							ch[x][y]=t1;
							t1=t;
							y-=1;
						}
						else
						{
							char t=ch[x][y];
							ch[x][y]=t1;
							t1=t;
							x+=1;
						}
					}
				}
				else
				{
					int tt=s[i+1]-'0';
					char t1;
					int x=(tt-1)/2,y=(7-tt)/2+1;
					t1=ch[x][y-1];
					ch[x][y-1]=ch[x][7-y]; 
					while(y<=(5+tt)/2)
					{
						char t=ch[x][y];
						ch[x][y]=t1;
						t1=t;
						y+=1;
					}
				}
			}
		}
	}
	for(int i=0;i<=3;i++)
	{
		for(int j=0;j<=6;j++) 
		{
			if(ch[i][j]!=' ') cout<<ch[i][j];
		}
	}
	return 0;
}
2023/6/20 17:20
加载中...