申请主机网站网站建设如何弄链接
2026/4/17 2:20:29 网站建设 项目流程
申请主机网站,网站建设如何弄链接,免费一键生成app工具,经济型网站建设​欢迎大家订阅我的专栏#xff1a;算法题解#xff1a;C与Python实现#xff01; 本专栏旨在帮助大家从基础到进阶 #xff0c;逐步提升编程能力#xff0c;助力信息学竞赛备战#xff01; 专栏特色 1.经典算法练习#xff1a;根据信息学竞赛大纲#xff0c;精心挑选…​欢迎大家订阅我的专栏算法题解C与Python实现本专栏旨在帮助大家从基础到进阶 逐步提升编程能力助力信息学竞赛备战专栏特色1.经典算法练习根据信息学竞赛大纲精心挑选经典算法题目提供清晰的代码实现与详细指导帮助您夯实算法基础。2.系统化学习路径按照算法类别和难度分级从基础到进阶循序渐进帮助您全面提升编程能力与算法思维。适合人群准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生希望系统学习C/Python编程的初学者想要提升算法与编程能力的编程爱好者附上汇总帖GESP认证C编程真题解析 | 汇总【题目来源】洛谷[P10724 GESP202406 七级] 区间乘积 - 洛谷【题目描述】小杨有一个包含n nn个正整数的序列A [ a 1 , a 2 , … , a n ] A[a_1,a_2,\dots,a_n]A[a1​,a2​,…,an​]。小杨想知道有多少对 l , r ( 1 ≤ l ≤ r ≤ n ) l,r(1\le l\le r\le n)l,r(1≤l≤r≤n)满足a l × a l 1 × ⋯ × a r a_l\times a_{l1}\times \dots \times a_ral​×al1​×⋯×ar​为完全平方数。一个正整数x xx为完全平方数当且仅当存在一个正整数y yy使得x y × y xy\times yxy×y。【输入】第一行包含一个正整数n nn代表正整数个数。第二行包含n nn个正整数a 1 , a 2 , … , a n a_1,a_2,\dots,a_na1​,a2​,…,an​代表序列A AA。【输出】输出一个整数代表满足要求的 l , r l,rl,r数量。【输入样例】5 3 2 4 3 2【输出样例】2【算法标签】《洛谷 P10724 区间乘积》 #数论# #前缀和# #位运算# #GESP# #2024#【代码详解】// 40分#includebits/stdc.husingnamespacestd;#defineintlonglong// 定义int为long long类型intn,ans;// n: 数组长度, ans: 答案inta[100005][12];// a[i][0]存储原数a[i][1..11]存储质因数分解结果intb[12]{0,0,2,3,5,7,11,13,17,19,23,29};// 前11个质数从索引1开始// 计算第k个数的质因数分解并累加到前缀和中voidcalc(intk){intxa[k][0];// 获取第k个数的原始值// 将前一个数的质因数分解结果复制到当前数for(inti1;i11;i){a[k][i]a[k-1][i];}// 特殊处理x1的情况if(x1){a[k][1]2;// 1的特殊处理将质数2的指数加2}// 对x进行质因数分解for(inti2;i11;i){// 不断除以质数b[i]直到不能整除为止while(x%b[i]0){x/b[i];// 除以质因数a[k][i];// 对应质因数的指数加1}}}signedmain()// 由于#define int long long所以用signed main{cinn;// 输入数组长度// 读取n个数并计算每个数的质因数分解前缀和for(inti1;in;i){cina[i][0];// 将输入的数存储在a[i][0]calc(i);// 计算第i个数的质因数分解}// 统计满足条件的子数组数量for(inti1;in;i)// 子数组的右端点{for(intj0;ji;j)// 子数组的左端点-1j0表示从开始{intf0,s0;// f: 是否不满足条件标志, s: 总指数和// 检查子数组a[j1..i]是否满足条件for(intk1;k11;k){// 计算子数组中第k个质因数的总指数sa[i][k]-a[j][k];// 检查这个质因数的指数是否为奇数if((a[i][k]-a[j][k])%2){f1;// 存在指数为奇数的质因数break;}}// 如果所有质因数的指数都是偶数且总指数和不为0if(!fs){ans;// 计数加1}}}coutansendl;// 输出结果return0;}// 100分#includebits/stdc.husingnamespacestd;#defineintlonglong// 将int定义为long long类型intn,x,y,ans;// n: 数字个数, x: 前缀异或和, y: 临时变量, ans: 答案inta[111]{1};// a[state]: 状态为state的前缀数量初始a[0]1intb[11]{0,2,3,5,7,11,13,17,19,23,29};// 前10个质数索引1-10// 计算函数返回y的质因数分解状态的二进制表示intcalc(){if(y1)// 如果y等于1返回0{return0;}ints0;// 状态值用二进制表示// 遍历前10个质数for(inti1;i10;i){intt0,c0;// t: 当前质数的状态位, c: 当前质数的指数计数// 对y进行质因数分解while(y%b[i]0){y/b[i];// 除以质因数c;// 指数加1// 关键只关心指数的奇偶性// 如果c是奇数设置对应的状态位if(c%2){t1i;// 第i位设为1}else{t0;// 第i位设为0}}st;// 累加状态}returns;// 返回状态值}signedmain()// 由于使用了#define int long long所以main要改为signed{// 输入数字个数cinn;// 处理n个数字for(inti1;in;i){// 输入当前数字ciny;// 计算y 输入的数字 ⊕ calc()的返回值// 注意这里y既用作输入又在calc()中被修改yx^calc();// x是之前的前缀异或和// 统计答案当前状态y出现的次数ansa[y];// 加上之前出现过的次数然后计数加1// 更新前缀异或和xy;}// 输出结果coutansendl;return0;}【运行结果】5 3 2 4 3 2 2

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询