CodeForces 545B Equidistant String
2015-11-25 21:15
337 查看
http://codeforces.com/problemset/problem/545/B
Equidistant String
Little Susie loves strings. Today she calculates distances between them. As Susie is a small girl after all, her strings contain only digits zero and one. She uses the definition of Hamming distance:
We will define the distance between two strings s and t of
the same length consisting of digits zero and one as the number of positions i, such that si isn't
equal to ti.
As besides everything else Susie loves symmetry, she wants to find for two strings s and t of
length n such string p of
length n, that the distance from p to s was
equal to the distance from p to t.
It's time for Susie to go to bed, help her find such string p or state that it is impossible.
Input
The first line contains string s of length n.
The second line contains string t of length n.
The length of string n is within range from 1 to 105.
It is guaranteed that both strings contain only digits zero and one.
Output
Print a string of length n, consisting of digits zero and one, that meets the problem statement. If no such string exist, print on
a single line "impossible" (without the quotes).
If there are multiple possible answers, print any of them.
Sample test(s)
input
output
input
output
Note
In the first sample different answers are possible, namely — 0010, 0011, 0110, 0111, 1000, 1001, 1100, 1101.
题意:找到一个字符串,使这个字符串与字符串s的差值和字符串t的差值相等,有多种情况,输出一个即可
思路:判断字符串s和字符串t有多少个对应字符不相等,如果有偶数个的话就存在字符串p,否则输出“impossible“,存在的话,从第一个位置开始遍历,如果s[i]和t[i]不相等的话,当是第奇数次的话将s[i]值付给p[i],当偶数次的时候将t[i]付给p[i],当s[i]和t[i]相等时候,将s[i]付给p[i];
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <limits>
#include <queue>
#include <stack>
#include <vector>
#include <map>
using namespace std;
typedef long long LL;
#define N 110000
#define INF 0x3f3f3f3f
#define PI acos (-1.0)
#define EPS 1e-8
#define met(a, b) memset (a, b, sizeof (a))
int main ()
{
char s
, t
, p
;
while (scanf ("%s %s", s, t) != EOF)
{
int cnt = 0, len = strlen (s);
met (p, 0);
for (int i=0; s[i]; i++)
if (s[i] != t[i])
cnt++;
if (cnt % 2)
{
puts ("impossible");
continue;
}
int flag = 1;
for (int i=0; s[i]; i++)
{
if (s[i] == t[i])
p[i] = s[i];
else if (flag % 2)
{
p[i] = s[i];
flag++;
}
else if (flag % 2 == 0)
{
p[i] = t[i];
flag++;
}
}
p[len] = '\0';
puts (p);
}
return 0;
}
Equidistant String
Little Susie loves strings. Today she calculates distances between them. As Susie is a small girl after all, her strings contain only digits zero and one. She uses the definition of Hamming distance:
We will define the distance between two strings s and t of
the same length consisting of digits zero and one as the number of positions i, such that si isn't
equal to ti.
As besides everything else Susie loves symmetry, she wants to find for two strings s and t of
length n such string p of
length n, that the distance from p to s was
equal to the distance from p to t.
It's time for Susie to go to bed, help her find such string p or state that it is impossible.
Input
The first line contains string s of length n.
The second line contains string t of length n.
The length of string n is within range from 1 to 105.
It is guaranteed that both strings contain only digits zero and one.
Output
Print a string of length n, consisting of digits zero and one, that meets the problem statement. If no such string exist, print on
a single line "impossible" (without the quotes).
If there are multiple possible answers, print any of them.
Sample test(s)
input
0001 1011
output
0011
input
000 111
output
impossible
Note
In the first sample different answers are possible, namely — 0010, 0011, 0110, 0111, 1000, 1001, 1100, 1101.
题意:找到一个字符串,使这个字符串与字符串s的差值和字符串t的差值相等,有多种情况,输出一个即可
思路:判断字符串s和字符串t有多少个对应字符不相等,如果有偶数个的话就存在字符串p,否则输出“impossible“,存在的话,从第一个位置开始遍历,如果s[i]和t[i]不相等的话,当是第奇数次的话将s[i]值付给p[i],当偶数次的时候将t[i]付给p[i],当s[i]和t[i]相等时候,将s[i]付给p[i];
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <limits>
#include <queue>
#include <stack>
#include <vector>
#include <map>
using namespace std;
typedef long long LL;
#define N 110000
#define INF 0x3f3f3f3f
#define PI acos (-1.0)
#define EPS 1e-8
#define met(a, b) memset (a, b, sizeof (a))
int main ()
{
char s
, t
, p
;
while (scanf ("%s %s", s, t) != EOF)
{
int cnt = 0, len = strlen (s);
met (p, 0);
for (int i=0; s[i]; i++)
if (s[i] != t[i])
cnt++;
if (cnt % 2)
{
puts ("impossible");
continue;
}
int flag = 1;
for (int i=0; s[i]; i++)
{
if (s[i] == t[i])
p[i] = s[i];
else if (flag % 2)
{
p[i] = s[i];
flag++;
}
else if (flag % 2 == 0)
{
p[i] = t[i];
flag++;
}
}
p[len] = '\0';
puts (p);
}
return 0;
}
相关文章推荐
- 96 Unique Binary Search Trees
- UVA1511 Buy or Build 二进制枚举+最小生成树kruskal
- UIScrollView视差效果动画
- CodeUI Test:UIMap录制文件分析一
- require js 将config和入口函数分开写
- 1062. Talent and Virtue (25)
- 1062. Talent and Virtue (25)
- codeforces 602 D. Lipshitz Sequence (单调栈)
- Android stuido 出现找不到符号
- iOS之初识UI
- 如何创建一个UIImageView对象去显示图片
- UITableView——reloadData与reloadSection性能比较
- 053-19 What recommendations does the SQL Access Advisor provide for optimizing SQL queries? (Choose
- CSS media queries
- hdu 4740 The Donkey of Gui Zhou(dfs模拟好题)
- UINavigationBar字体颜色
- 使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- iOS开发小技巧:刷新UITableView
- Ant的build.xml脚本模板
- 053-18 What two statements are true regarding the recommendations received from the SQL Access Advi