Hướng dẫn cho TLEOJ Contest #10 - Tổng dãy con
Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Authors:
Để giải quyết bài toán, ta thực hiện các bước sau:
- Tính dãy a từ số x theo công thức a_i = (x + c * (i - 1)) % 100.
- Tính tổng sum của dãy b từ 1 đến n.
- Từ sum, ta tìm được số chu kỳ t = \lfloor \frac{n}{k} \rfloor và số phần tử trong chu kỳ c.
- Tính tổng ans bằng t * sum và cộng thêm phần tử thứ i trong chu kỳ thứ t+1.
Dưới đây là code giải quyết bài toán.
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
int a[201]; ll c = 0;
bool ds[101]; // Danh dau
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
ll x, k, n;
cin >> x >> k >> n;
ll sum = 0;
while(ds[x % 100] == 0){
ds[x % 100] = 1;
a[++c] = x % 100;
sum = sum + (x % 100);
x = x + k;
}
ll u = n / c; ll v = n % c;
ll ans = u * sum;
for(int i = 1; i <= v; i++){
ans = ans + a[i];
}
cout << ans;
}
Bình luận