记录编号 133486 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [東方S2] 帕秋莉·诺蕾姬 最终得分 100
用户昵称 Gravatar水中音 是否通过 通过
代码语言 C++ 运行时间 0.018 s
提交时间 2014-10-28 07:23:42 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
char s[2010];
int m,i,j,ans1,ans2,wordlen=0;
long long Sum=0,tempsum,magic[2010]={0},w[2010]={0};
inline void init()
{
	scanf("%s",s);
	scanf("%d",&m);
	while(s[wordlen]>='A'&&s[wordlen]<='Z') wordlen++;
	wordlen--;
	for(i=0,j=wordlen;i<=wordlen;i++,j--) magic[i]=s[j]-65;
}
inline bool prework()
{
	w[0]=1;Sum=w[0]*magic[0];
	for(i=1;i<=wordlen;i++)
	{
		w[i]=w[i-1]*26%m;
		Sum+=w[i]*magic[i];
	}
	if(!(Sum%m))return true;
	else return false;
}
inline bool changework()
{
	for(i=wordlen;i>=0;i--)
	for(j=i-1;j>=0;j--)
	{
		tempsum=Sum-magic[i]*w[i]-magic[j]*w[j];
		tempsum+=magic[i]*w[j]+magic[j]*w[i];
		if(!(tempsum%m))return true;
	}
	return false;
}
int main()
{
	freopen("patchouli.in","r",stdin);
	freopen("patchouli.out","w",stdout);
	init();
	if(prework())printf("0 0\n");
	else
	if(changework())
	{
		ans1=wordlen-i+1;
		ans2=wordlen-j+1;
		printf("%d %d\n",ans1,ans2);
	}
	else printf("-1 -1\n");
	return 0;
}