求调求调求调求调
查看原帖
求调求调求调求调
1232632
cclianlian楼主2024/7/14 10:09
using namespace std;
using ll = long long;
int n,ans=0;
map<ll,vector<int>>mp;
void solve() {
    cin >> n;
    vector<ll>a(n + 9, 0);
    vector<ll>b(n + 9, 0);
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        b[i] = b[i - 1] + a[i];
        b[i] %= 7;
        mp[b[i]].push_back(i);//同余的添加下标
    }
    /*for (auto item : b) {
        cout << item << " ";
    }
    cout << endl;*/
    for (auto& t : mp) {
        int size = t.second.size();
        if (size >= 2) {
            /*cout << "t.first==" << t.first<<endl;*/
            ans = max(ans, t.second[size - 1] - t.second[0]);
        }
    }
    /*for (int i = 1; i <= n; i++) {
        cout << b[i] << " ";
    }
    cout << endl;*/
    
    cout << ans;
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0); std::cout.tie(0);
    solve();
    return 0;
}

84pts,求大佬指教,是逻辑错了还是什么没注意到?

2024/7/14 10:09
加载中...