#include<iostream>
#include<string>
using namespace std;
void faction(int *numerator, int *denominator){
for(int i=2;i<=(*numerator);i++){
if((*numerator)*1.0/i==(*numerator)/i &&
(*denominator)*1.0/i==(*denominator)/i){
*numerator/=i;
*denominator/=i;
faction(numerator, denominator);
}
}
}
int main(int argc, char *argv[]){
string s1;
string s2;
while(cin>>s1,s1!="-1"){
cin>>s2;
string sBig, sSmall;
if(s1.length()>s2.length()){
sBig=s1;
sSmall=s2;
}else{
sBig=s2;
sSmall=s1;
}
int moveCnt=1;
int maxSameCnt=0;
for(int i=0;i<sBig.length()+sSmall.length();i++){
int sameCnt=0;
for(int j=0;j<moveCnt;j++){
if(sSmall[sSmall.length()-1-j]==sBig[i-j]){
sameCnt++;
}
}
moveCnt++;
if(moveCnt>sSmall.length()){
moveCnt=sSmall.length();
}
if(sameCnt>maxSameCnt){
maxSameCnt=sameCnt;
}
}
int max=maxSameCnt*2;
int sumLen=s1.length()+s2.length();
if(max*1.0/sumLen==max/sumLen){
cout<<"appx("<<s1<<","<<s2<<") = "<<max/sumLen<<endl;
}else{
faction(&max,&sumLen);
cout<<"appx("<<s1<<","<<s2<<") = "<<max<<"/"<<sumLen<<endl;
}
}
return 0;
}
POJ-1580(一直WA,没有找到原因)
最新推荐文章于 2017-12-05 16:55:35 发布