题解:因子化简
题目大意#includebits/stdc.h using namespace std; //x[i]0表示是素数 int x[1000005]; bool test(int i){ for(int j2;jint(sqrt(i)1);j){ if(i%j0)return false; } return true; } void init(){ memset(x, 0, sizeof(x)); x[0]x[1]1; for(int i2;i1000000;i){ if(x[i]1)continue; bool flagtest(i); if(flag){ x[i]0; for(int j2*i;j1000000;){ x[j]1; ji; } } } } long long find(long long n,mapint,intp,int t){ int k2; long long num1; long long tempn; while(temp!1 ksqrt(n)1){ if(x[k]0){ while(temp%k0){ p[k]1; temptemp/k; } } k; } if(temp1){ p[temp]; // temp本身是素数 } for(auto it:p){ if(it.secondt){ numnum*pow(it.first,it.second); } } return num; } int main(){ int q; cinq; init(); for(int i0;iq;i){ long long n,k; cinnk; mapint,intp; long long sumfind(n,p,k); coutsumendl; } return 0; }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2410518.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!