Đăng nhập để hỏi chi tiết


giúp mình bài nãy với, ai có code chạy nhanh và đúng hơn sẽ dc hay nhất.
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#danglam228
#include <bits/stdc++.h>
using namespace std;
const int N = 1000000007;
int n, k, p;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("TONG.INP", "r", stdin);
freopen("TONG.OUT", "w", stdout);
cin >> n >> k >> p;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
int j = (p - 1) % n;
long long d = 0;
for (int i = 0; i < k; ++i) {
d = (d + a[(j + i) % n]) % N;
}
cout << d << endl;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
đặt m = k / n, x = k % n
vì dãy a là một dãy vòng tròn, nên tổng liên tiếp của mảng a sẽ gồm m lần tổng dãy a và x phần tử liên tiếp từ vị tri p
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e6 + 1;
long long a[nmax] , n , k , p , s = 0 , mod = 1e9 + 7, ans = 0;
int main()
{
cin >> n >> k >> p;
for (long long i = 0; i < n; ++i)
{
cin >> a[i];
s += a[i];
}
long long m = k / n;
s= s * m;
long long x = k % n;
p = (p - 1) % n;
for (int i = 0; i < x; ++i)
{
s = (s + a[(p + i) % n]) % mod;
}
cout << s;
}Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Bảng tin