問題は、AOJのものです。
問題です。
http://judge.u-aizu.ac.jp/onlinejudge/d ... sp?id=0040
自分は次のように書きました。
#include<stdio.h>
#include<string.h>
int main(void)
{
int i,j,m,p,s,len;
int A,B,C[26];
int x,y,z;
int d,e;
char moji[256];
for(j=0;j<25;j++)
{
for(m=0;m<25;m++)
{
for(p=0;p<25;p++)
{
for(s=0;s<25;s++)
{
if((((A*('a'+j)+B)%26)=='t')&&(((A*('a'+m)+B)%26)=='h')&&(((A*('a'+p)+B)%26)=='a')&&(((A*('a'+s)+B)%26)=='i'))
{
d=A;
e=B;
}
}
}
}
}
printf("%d,%d\n",d,e);
gets(moji);
len=strlen(moji);
for(i=0;i<len;i++)
{
if(moji[i]!=' ')
{
moji[i]-='a';
}
}
for(i=0;i<len;i++)
{
if(moji[i]==' ')
C[i]=moji[i];
else
C[i]=(d*moji[i]+e)%26;
}
for(i=0;i<len;i++)
{
printf("%c",C[i]);
}
}
αをA,ベータをBとしました。
エラーは出ないのですが、答えを入力すると文字化けしてしまいます。
例えばpnopと打った場合、thatがでるはずなのですが(入力、出力例より)文字化けしてしまいます。
また、途中でd=Aとe=Bの値を表示するようにしたのですが、値が大きすぎる気がします。
どこが間違っているのでしょうか?
教えていただけますでしょうか。
よろしくお願いします。