Hatena::Grouptopcoder

Wrong Answer -- japlj このページをアンテナに追加 RSSフィード

 | 

2011-01-21

PKU 3535 -- A+B

| 16:39 | PKU 3535 -- A+B - Wrong Answer -- japlj を含むブックマーク はてなブックマーク - PKU 3535 -- A+B - Wrong Answer -- japlj PKU 3535 -- A+B - Wrong Answer -- japlj のブックマークコメント

i文字目に使える文字が c 種類あるとすると、i桁目がc進数である(cで繰り上がりする)ような整数どうしの足し算としてよい。


#include<cstdio>

using namespace std;

char a[100000], b[100000], s[100000], c[32];
bool ng[100000][26];

int main()
{
  int n, k;
  scanf("%d%d", &n, &k);
  for(int i=0; i<k; ++i) {
    scanf("%s", s);
    for(int j=0; j<n; ++j) ng[j][s[j]-'a'] = true;
  }
  scanf("%s%s", a, b);
  int carry = 0;
  for(int i=n-1; i>=0; --i) {
    int chars = 0;
    for(int j=0; j<26; ++j) {
      if(ng[i][j]) continue;
      if(a[i]=='a'+j) carry+=chars;
      if(b[i]=='a'+j) carry+=chars;
      c[chars++] = 'a'+j;
    }
    s[i] = c[carry % chars];
    carry /= chars;
  }
  s[n] = '\0';
  printf("%s\n", s);
  return 0;
}
 |