随笔-141  评论-9  文章-3  trackbacks-0

 题意:计算两个字符串对应的编码mod 47 之后是否相等。其中"A"=1,"Z"=26

分析:对于每个字符ch,值ch-'A'+1。为了防止溢出,可利用,(a*b) mod n  =   (( a mod n ) *b ) mod n

如此类推。

/*
ID: lorelei3
LANG: C++
TASK: ride
*/


#include 
<fstream>
#include 
<string>

using namespace std;

inline 
long calc(char ch){
    
return ch-'A'+1;
}


inline 
long calc(string s){
    
long res =  1;
    
int len = s.length();
    
for(int i=0; i<len; ++i){
        res 
*= calc(s[i]);
        res 
%= 47;
    }

    
return res;
}


int main(){
    ifstream fin(
"ride.in");
    ofstream fout(
"ride.out");
    
string s1,s2;
    fin
>>s1>>s2;
    
if(calc(s1)==calc(s2))
        fout
<<"GO"<<endl;
    
else
        fout
<<"STAY"<<endl;

    
return 0;
}
posted on 2010-11-02 21:51 小阮 阅读(225) 评论(0)  编辑 收藏 引用 所属分类: USACO

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理