(公约数问题) Xenia and Hamming (356B)
2013-10-17 10:10
447 查看
题意:给出两个字符串(等长),求出其相同位置字符不同的个数。
其中:字符串是一个重复的字符串,先给出一个比较短的,然后再重复N次。
解法:自己体会吧
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
![](http://codeforces.ru/renderer/e1d6a090dd97e9f4f63508113d5e76da503b5b3d.png)
.
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,
![](http://codeforces.ru/renderer/ae2441c6f66fcbeb4042a21ad7bf1d53880db895.png)
.
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 cin, cout streams
or the %I64dspecifier.
Sample test(s)
input
output
input
output
input
output
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.
其中:字符串是一个重复的字符串,先给出一个比较短的,然后再重复N次。
解法:自己体会吧
#include<iostream> #include<algorithm> #include<cstring> using namespace std; #define N 1000010 int sum [26]={0}; char a ,b ; int gcd(int a,int b) { if (a>b) swap(a,b); return b%a==0?a:gcd(b%a,a); } int main( ) { int i,j,k; long long n,m; int lena,lenb; cin>>n>>m>>a>>b; lena=strlen(a); lenb=strlen(b); int G=gcd(lena,lenb); long long L = 1LL*lena*lenb/G; long long ans=0; for (i=0;i<lena;i++) sum[i%G][a[i]-'a']++; for (i=0;i<lenb;i++) ans+=sum[i%G][b[i]-'a']; cout<<(1LL*n*lena)/L*(L-ans)<<endl; return 0; }
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
![](http://codeforces.ru/renderer/e1d6a090dd97e9f4f63508113d5e76da503b5b3d.png)
.
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,
![](http://codeforces.ru/renderer/ae2441c6f66fcbeb4042a21ad7bf1d53880db895.png)
.
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 cin, cout 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.
相关文章推荐
- [MSSQL]Understand SQL Server Log Shipping
- 大内高手
- Drupal中的模块载入
- 标准C++中的string类的用法总结
- android开发_国外论坛
- 【红米刷机】红米手机卡刷稳定版教程
- RHEL 6.4_64安装教程(虚拟机安装)
- c1messagebox 本地化按钮的内容
- 设计模式(c++)笔记之五(Prototype 模式)
- 无线通信协议有哪些
- CountDownLatch和CyclicBarrier 的用法
- LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 细说VMWare加入OpenStack
- ASP.NET获取汉字首字母
- HandlerSocket + MySQL
- MYSQL 指定数据库查询所有表行数。
- 用python进行图形化的log分析
- android退出应用程序
- android学习——popupWindow 在指定位置上的显示
- .net异常小总