TB椰程 TypeBuddy 打字搭子

2024-06 · 7级 · 区间乘积

GESP 标程 · 考级真题 · 代码 · cpp · 难度 5/5 · 共 906 字

CCF 原卷官方标程 · STL、位运算 · 本地编译通过

  • 2024-06
  • STL

正文

// GESP 2024-06 C++ 7级 编程题 2 · 区间乘积
// 原题:https://oj.yecheng.tv/p/gs2406l7p2
// 官方原卷:https://gesp.ccf.org.cn/101/attach/1621071620997152.pdf
// 题意:小杨有一个包含个正整数的序列 。
// 知识点:STL、位运算
// 参考程序:CCF 原卷官方标程,PDF 抽取后已去行号;本地编译核验通过,供打字练习
// 原卷样例验证:样例验证 1/1 通过
//
#include<bits/stdc++.h>
using namespace std;
map<int,int> mp;
const int N = 1e5+10;
int calc(int x) {
    int res = 0;
    for (int i = 2; i * i <= x; i++) {
        if (x % i == 0) {
            while (x% i == 0){
                x/= i;
                res^=(1<<(i-1));
            }
        }
    }
    if (x != 1) {
        res^=(1<<(x-1));
    }
    return res;
}
int a[N];
int main(){
    int n;
    cin>>n;
    long long ans = 0;
    int pre = 0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        int res = calc(a[i]);
        pre^=res;
        if(pre==0)
            ans++;
        ans+=mp[pre];
        mp[pre]+=1;
    }
    cout<<ans<<"\n";
}

GESP 标程 · 考级真题的其它内容

打字首页 · 英语学习中心 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK