zoukankan      html  css  js  c++  java
  • B. Xenia and Hamming Codeforces 256B GCD,LCM处理字符串

    B. Xenia and Hamming
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Xenia is an amateur programmer. Today on the IT lesson she learned about the Hamming distance.

    The Hamming distance between two strings s = s1s2... sn and t = t1t2... tn of equal length n is value . Record [si ≠ ti] is the Iverson notation and represents the following: if si ≠ ti, it is one, otherwise — zero.

    Now Xenia wants to calculate the Hamming distance between two long strings a and b. The first string a is the concatenation of n copies of string x, that is, . The second string b is the concatenation of m copies of string y.

    Help Xenia, calculate the required Hamming distance, given n, x, m, y.

    Input

    The first line contains two integers n and m (1 ≤ n, m ≤ 1012). The second line contains a non-empty string x. The third line contains a non-empty string y. Both strings consist of at most 106 lowercase English letters.

    It is guaranteed that strings a and b that you obtain from the input have the same length.

    Output

    Print a single integer — the required Hamming distance.

    Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cincout streams or the %I64dspecifier.

    Sample test(s)
    input
    100 10
    a
    aaaaaaaaaa
    output
    0
    input
    1 1
    abacaba
    abzczzz
    output
    4
    input
    2 3
    rzr
    az
    output
    5
    Note

    In the first test case string a is the same as string b and equals 100 letters a. As both strings are equal, the Hamming distance between them is zero.

    In the second test case strings a and b differ in their 3-rd, 5-th, 6-th and 7-th characters. Thus, the Hamming distance equals 4.

    In the third test case string a is rzrrzr and string b is azazaz. The strings differ in all characters apart for the second one, the Hamming distance between them equals 5.

    /*
     * Author:  
     * Created Time:  2013/11/6 16:19:40
     * File Name: C.cpp
     * solve: C.cpp
     */
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<string>
    #include<map>
    #include<stack>
    #include<set>
    #include<iostream>
    #include<vector>
    #include<queue>
    //ios_base::sync_with_stdio(false);
    //#pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    #define sz(v) ((int)(v).size())
    #define rep(i, a, b) for (int i = (a); i < (b); ++i)
    #define repf(i, a, b) for (int i = (a); i <= (b); ++i)
    #define repd(i, a, b) for (int i = (a); i >= (b); --i)
    #define clr(x) memset(x,0,sizeof(x))
    #define clrs( x , y ) memset(x,y,sizeof(x))
    #define out(x) printf(#x" %d
    ", x)
    #define sqr(x) ((x) * (x))
    typedef long long LL;
    
    const int INF = 1000000000;
    const double eps = 1e-8;
    const int maxn = 1000010;
    
    int sgn(const double &x) {  return (x > eps) - (x < -eps); }
    
    char a[maxn];
    char b[maxn];
    LL len,n,m;
    int lena,lenb;
    LL gcd(LL x ,LL y)
    {
        return y == 0 ? x : gcd(y,x%y);
    }
    LL lcm(LL x,LL y)
    {
        return x/gcd(x,y)*y;
    }
    int dpa[maxn][26];
    
    int main() 
    {
        //freopen("in.txt","r",stdin);
        while(cin>>n>>m)
        {
            clr(dpa);
            scanf("%s %s",a,b);
            lena = strlen(a);
            lenb = strlen(b);
            LL ans = 0;
            len = gcd(lena,lenb);
            rep(i,0,lena)
                dpa[i%len][a[i] - 'a']++;//dpa[i][j]代表i位置出现字符j的次数
            rep(i,0,lenb)
            {
                rep(j,0,26)
                {
                    if(b[i] - 'a' != j)
                        ans += dpa[i%len][j];
                }
            }
            LL Len = lcm(lena,lenb);
            cout<<n*lena/Len*ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    初学Java8:通过JDBC实现简易人力资源管理系统
    Java典型题目 >>>>>>长期更新
    初学Java7:简单设计人力资源管理系统
    初学Java6:Java OOP基础语法总结
    初学Java5:模拟注册登录幸运抽奖全过程
    could not initialize proxy
    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
    分页存储过程
    java 成长之路[轉載u]
    UploadHandleServlet
  • 原文地址:https://www.cnblogs.com/DreamHighWithMe/p/3412306.html
Copyright © 2011-2022 走看看