第2题只过33,求大佬看看 #include<bits/stdc++.h> using namespace std; int n,t,ans,j; vector<int>& get_su(vector<int>& su, int n){ vector<bool> tst(n+1,true); for(int i=2;i*i<=n;i++){ if(tst[i]) su.push_back(i); for(int j=0;j<su.size() && su[j]*i<=n;j++) tst[su[j]*i]=false; } return su; } int count_factor(vector<int>& su,int n){ int tmp=0; for(auto &x:su){ if(2*x>n) break; if(n%x==0) tmp++; } return tmp; } int power2(int n){ int ans=1,tmp=2; while(n){ if(n%2){ ans *= tmp; } n /= 2; tmp *= tmp; } return ans; } vector<int> su; int main(){ su = get_su(su,1e8+3); cin>>t; while(t--){ cin>>n; if(n==1){ cout<<0<<endl; continue; } j = count_factor(su,n); if(j==0) cout<<1<<endl; else cout<<power2(j)/2<<endl; } return 0; }
点赞 2
牛客网
牛客网在线编程
牛客网题解
牛客企业服务