1 solutions
-
0
由于数据比较大n < 1e12,因此我们要用高精度
#include <bits/stdc++.h> using namespace std; vector<int> mul(vector<int> a, long long b) { vector<int> c; long long r = 0; for(int i = 0; i < a.size() || r; i ++ ) { if(i < a.size()) r += (long long)a[i] * b; c.push_back(r % 10); r /= 10; } while(c.size() > 1 && c.back() == 0) c.pop_back(); return c; } vector<int> div(vector<int> a, int b, int r) { vector<int> c; for(int i = a.size() - 1; i >= 0; i -- ) { r = r * 10 + a[i]; c.push_back(r / b); r %= b; } reverse(c.begin(), c.end()); while(c.size() > 1 && c.back() == 0) c.pop_back(); return c; } int main() { string A; long long b = 0; cin >> A; vector<int> a; for(int i = A.size() - 1; i >= 0; i -- ) a.push_back(A[i] - '0'); for(int i = 0; i < A.size(); i ++ ) b = b * 10 + (A[i] - '0'); auto c = div(mul(a, (b + 1)), 2, 0); for(int i = c.size() - 1; i >= 0; i -- ) cout << c[i]; return 0; }
- 1
Information
- ID
- 497
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 148
- Accepted
- 3
- Uploaded By