程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Codeforces Round #207 (Div. 1) B. Xenia and Hamming

Codeforces Round #207 (Div. 1) B. Xenia and Hamming

編輯:關於C++

 

Solution

設lena為a串長度,lenb為b串長度,gcd,lcm,為lena和lenb的gcd,lcm… 你會發現一個同余關系,首先,lcm長度一次循環,在一次lcm長度內,a的每個字符,與b的每個同余位置的字符觸碰且只觸碰一次,然後就好辦了。把答案求出來,再與lcm搞一搞。。

My code

//Hello. I'm Peter.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
#define peter cout< b; i--)
#define repin(i, a, b) for (int i = a; i <= b; i++)
#define depin(i, a, b) for (int i = a; i >= b; i--)
#define pi 3.1415926535898
#define eps 1e-6
#define MOD 1000000007
#define MAXN 1000010
#define N
#define M
ll n,m,lena,lenb,d,l,sum;
char a[MAXN],b[MAXN];
int c[MAXN][26];
int main(){
    cin>>n>>m;
    scanf(%s%s,a,b);
    lena=len(a),lenb=len(b);
    d=__gcd(lena,lenb);
    l=lena/d*lenb;
    int t=0;
    rep(i,0,lena){
        c[t++][a[i]-'a']+=1;
        if(t==d) t=0;
    }
    t=0;
    sum=l;
    rep(i,0,lenb){
        sum-=c[t++][b[i]-'a'];
        if(t==d) t=0;
    }
    sum=(n*lena/l)*sum;
    cout<
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved