?? 2405.cpp
字號:
/* This Code is Submitted by wywcgs for Problem 2405 on 2006-10-25 at 21:52:46 */
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 128;
bool sgn(int k) { return k == 0 ? 0 : 1; }
bool frid(int*, int*);
bool neib(char*, int*, char*, int*);
int main()
{
char str1[N], str2[N];
int T;
//freopen("d.in", "r", stdin);
scanf("%d", &T);
for(int t = 0; t < T; t++) {
scanf("%s %s", str1, str2);
int n1[10] = { 0 }, n2[10] = { 0 };
for(int i = 0; str1[i] != 0; i++) n1[str1[i]-'0']++;
for(int i = 0; str2[i] != 0; i++) n2[str2[i]-'0']++;
if(frid(n1, n2)) printf("friends\n");
else if(neib(str1, n1, str2, n2) || neib(str2, n2, str1, n1)) printf("almost friends\n");
else printf("nothing\n");
}
return 0;
}
bool frid(int* n1, int* n2)
{
for(int i = 0; i < 10; i++)
if(sgn(n1[i]) != sgn(n2[i])) return false;
return true;
}
bool neib(char* str1, int* n1, char* str2, int* n2)
{
for(int i = 1; str1[i] != 0; i++) {
if(str1[i-1] != '0' && str1[i] != '9' && (i != 1 || str1[i-1] != '1')) {
n1[str1[i-1]-'0']--; n1[str1[i]-'0']--;
n1[str1[i-1]-'0'-1]++; n1[str1[i]-'0'+1]++;
if(frid(n1, n2)) return true;
n1[str1[i-1]-'0']++; n1[str1[i]-'0']++;
n1[str1[i-1]-'0'-1]--; n1[str1[i]-'0'+1]--;
}
if(str1[i-1] != '9' && str1[i] != '0') {
n1[str1[i-1]-'0']--; n1[str1[i]-'0']--;
n1[str1[i-1]-'0'+1]++; n1[str1[i]-'0'-1]++;
if(frid(n1, n2)) return true;
n1[str1[i-1]-'0']++; n1[str1[i]-'0']++;
n1[str1[i-1]-'0'+1]--; n1[str1[i]-'0'-1]--;
}
}
return false;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -