提交时间:2025-10-08 15:31:33

运行 ID: 38461

#include <bits/stdc++.h> #define int long long using namespace std; int n,m; int ans=0,lans; int tg; unordered_map<pair<int,int>,int> sp; int dfs(int dq,int lst){ if (dq==1){ return sp[{dq,lst}]=1; } if (dq<lst){ return 0; } if (sp.count({dq,lst})>0){ return sp[{dq,lst}]; } auto& ans=sp[{dq,lst}]; for (int ys=lst;ys<=dq;ys++){ if (ys>m) break; if (dq%ys==0){ ans+=dfs(dq/ys,ys); } } return ans; } signed main(){ // freopen("factor.in","r",stdin); // freopen("factor.out","w",stdout); ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n>>m; for (int i=2;i<=n;i++){ // lans=0; lans=dfs(i,2); ans=ans^lans; } cout<<ans<<"\n"; return 0; }