Problem 48
The series, 11 + 22 + 33 + ... + 1010 = 10405071317.
Find the last ten digits of the series, 11 + 22 + 33 + ... + 10001000.
C++:
#includeusing namespace std;typedef unsigned long long ULL;const ULL DIGITS10 = 10000000000;// 模幂函数ULL powermod(__uint128_t a, int n, ULL m){ __uint128_t res = 1L; while(n) { if(n & 1L) { res *= a; res %= m; } a *= a; a %= m; n >>= 1; } return (ULL)res;}int main(){ long n; ULL ans; while(cin >> n) { ans = 0; for(int i=1; i<=n; i++) { ans += powermod(i, i, DIGITS10); ans %= DIGITS10; } cout << ans << endl; } return 0;}
Python:
print(sum([(x**x)%(10**10) for x in range(1,1001)])%(10**10))