川のブログ

川の適当気ままなブログです。 

AOJ 0040 Affine Cipher

こんにちは川です。

今回は問題文にあるαとβを1~50までの間をひたすら探してthatかthisが出るまでひたすらfor文で回しただけのものでした。

非常に汚いね。

 

ソースコード

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;char st;
    cin>>n;
    string str;
    for(int i=0;i<=n;i++){
        getline(cin,str);
        bool kawa=0;
        for(int j=1;j<50&&!kawa;j++){
            for(int k=1;k<50&&!kawa;k++){
                string strin=str;
                for(int l=0;strin[l]!='\0';l++)
           if(strin[l]-'a'>=0&&strin[l]-'z'<=0)
             strin[l]=(j*(strin[l]-'a')+k)%26+'a';
                for(int l=0;strin[l]!='\0';l++){
                    if(strin[l]=='t'&&strin[l+1]=='h'&&
             (strin[l+2]=='a'&&strin[l+3]=='t'||
              strin[l+2]=='i'&&strin[l+3]=='s')){
                           cout<<strin<<endl;
                           kawa=1;
                           break;
                    }
                }
            }
        }
    }
}