#pragma GCC optimize("Ofast") #pragma GCC target("avx2") #include #include #include #include // clang-format off #define RD(v) int v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} // // clang-format on #define wt_int(var, buf, ptr) \ while (var) { \ buf[ptr++] = var % 10; \ var /= 10; \ } \ while (ptr--) putc_unlocked(buf[ptr] + '0', stdout); int a[100000]; int main() { // void *mmap(void * addr , size_t length , int prot , int flags , int fd , off_t offset ); char *rp = (char *)mmap(0l, 1l << 28, 1, 2, 0, 0ll); RD(n) RD(k); int sum = 0; int *ap = a; for (int i = 0; i < n; ++i) { RD(t); *ap++ = t; sum += t; } unsigned int ans = 0; long base = 1; while (ap-- > a) { ans += (base * *ap) % sum; ans %= sum; base *= k; base %= sum; } if (ans == 0) { putc_unlocked('0', stdout); exit(0); } int ptr = 0; char buf[10]; wt_int(ans, buf, ptr); exit(0); return 0; }