社区讨论
求问跨年赛 T2
学术版参与者 4已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mlpdssi8
- 此快照首次捕获于
- 2026/02/17 00:21 前天
- 此快照最后确认于
- 2026/02/17 18:44 前天
CPP
#include<bits/stdc++.h>
using namespace std;
int lcm(int x, int y){
int a = x, b = y;
while(b){
int temp = a % b;
a = b;
b = temp;
}
return x / a * y;
}
unsigned long long mul(unsigned long long a, unsigned long long b, unsigned long long mod){
if(a == 0 || b == 0){
return 0;
}
unsigned long long res = 0;
a %= mod;
while(b){
if(b & 1){
res = (res + a) % mod;
}
a = (a <<= 1) % mod;
b >>= 1;
}
return res;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
unsigned long long d, n, m, t;
cin >> d >> n >> m >> t;
if(d == 1){
cout << 0;
return 0;
}
unsigned long long a[3005], b[3005];
for(int i = 0; i < n; i++){
cin >> a[i];
a[i] %= d;
b[i] = a[i];
}
int re = lcm(n, m);
unsigned long long flag = 0;
for(int i = 0; i < re; i++){
if(i % m == 0){
unsigned long long k = a[n - 1];
for(int j = n - 1; j >= 1; j--){
a[j] = a[j - 1];
}
a[0] = k;
}
flag = (flag + a[i % n]) % d;
}
flag = mul(flag, t / re, d);
long long el = t % re;
memcpy(a, b, n * sizeof(unsigned long long));
for(int i = 0; i < el; i++){
if(i % m == 0){
unsigned long long k = a[n - 1];
for(int j = n - 1; j >= 1; j--){
a[j] = a[j - 1];
}
a[0] = k;
}
flag = (flag + a[i % n]) % d;
}
cout << flag;
}
一直过不去。。。。。求条必关
回复
共 7 条回复,欢迎继续交流。
正在加载回复...