백준 1225. 이상한 곱셈


조건
만자릿수 이하의 두 자연수 A, B의
모든 각 자릿수들을 곱해서 더한 합이 이상한 곱셈이다
(A가 n자리, B가 m자리 수라면 총 가능한 조합은 n*m개)

생각
두 수의 모든 자릿수들(0~9) digit을 카운트해서
a의 digit 1~9까지 i, 각 자릿수 a[i]
b의 digit 1~9까지 j, 각 자릿수 b[j]
최종 합은 sum = i * j * a[i] * a[j]




#include <stdio.h>
typedef long long llint;

int main() {
 int a[10] = { 0, };
 int b[10] = { 0, };
 char c;
 while ((c = getchar()) != ' ')
  a[c - 48] += 1;
 while ((c = getchar()) != EOF)
  b[c - 48] += 1;
 llint sum = 0;
 for (int i = 1; i < 10; ++i)
  for (int j = 1; j < 10; ++j) {
   llint tmp = i * j;
   tmp *= a[i];
   tmp *= b[j];
   sum += tmp;
  }
 printf("%lld", sum);
}



*9999999999999999.. x 9999999999999999999999.. 라도 롱롱int를 안넘는지 모르겠네

다음 글 이전 글
댓글 쓰기
comment url