首页 > 代码库 > HDU1286 找新朋友
HDU1286 找新朋友
这个问题简单暴力的话会TLE,在这里我使用了筛法。
1 #include <cstdio> 2 #include <cstring> 3 #define MAXN 36000 4 int m[MAXN]; 5 bool f[MAXN]; 6 int solve(int n){ 7 if(m[n]) return m[n]; 8 int i,j,ans=1; 9 memset(f,true,sizeof(f)); 10 for(i=2;i<n;++i){ 11 if(f[i]){ 12 if(n%i==0) 13 for(j=i<<1;j<n;j+=i) 14 f[j]=false; 15 else ++ans; 16 } 17 } 18 return (m[n]=ans); 19 } 20 int main(){ 21 int t,n; 22 memset(m,0,sizeof(m)); 23 scanf("%d",&t); 24 while(t--){ 25 scanf("%d",&n); 26 printf("%d\n",solve(n)); 27 } 28 return 0; 29 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。