P8842 [传智杯 #4 初赛] 小卡与质数 2题目背景小卡迷上了质数题目描述小卡最近迷上了质数所以他想把任何一个数都转化为质数小卡有TTT次询问每次给你一个数字xxx问有多少个比xxx小的非负整数yyy使得x⊕yx\oplus yx⊕y是质数其中⊕\oplus⊕表示按位异或。输入格式第一行一个正整数T(1≤T≤105)T(1\le T\le10^5)T(1≤T≤105)表示有TTT组询问。接下来TTT行每行一个正整数x(1≤x≤106)x(1\le x\le 10^6)x(1≤x≤106)。输出格式对于每组询问输出一行一个整数表示答案。输入输出样例 #1输入 #19 5 6 7 8 9 10 100 1000 10000输出 #12 4 4 2 2 4 22 163 1132C实现#includebits/stdc.husingnamespacestd;constintN121;boolf[N10];intp[N10],k;intcnt[30];voidqwq(){for(inti2;iN;i){//线性筛if(f[i]0){p[k]i;}for(intj1;jki*p[j]N;j){f[i*p[j]]1;if(i%p[j]0){break;}}}for(inti1;ik;i){for(intj22;j0;j--){if(p[i](1j)){cnt[j];//计算当质数为j位时一共的个数break;}}}}intmain(){qwq();//预处理intt;cint;while(t--){intn,c0;cinn;for(inti22;i0;i--){if(n(1i)){ccnt[i];//最后计算数量}}coutcendl;}return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容