ahu-557容斥原理
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                ahu-557容斥原理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                用容斥求1-n中能被2-i中素?cái)?shù)整除的個(gè)數(shù)ans其中 i*i<=n;然后結(jié)果為n-ans-1;
#include<cstdio> int pri[10005],pri2[10005],i1,n,ans; void toGetPrim(){for(int i=2;i<=10001;i++)if(!pri[i]){for(int j=2;j*i<=10001;j++)pri[i*j] = 1;}i1 = 0;for(int i=2;i<=10001;i++)if(!pri[i]){pri2[i1] = i;i1++;} } void dfs(int re,int all,int pre){if(re!=1){if(all==1)ans-=1;if(all%2)ans+=n/re;else ans-=n/re;}for(int i=pre;i<i1;i++){long long g = (long long)re*pri2[i];if(g>n)return;dfs(g,all+1,i+1);} } int main() {toGetPrim();while(scanf("%d",&n)&&n){ans = 0;dfs(1,0,0);printf("%d\n",n-1-ans);}return 0; }總結(jié)
以上是生活随笔為你收集整理的ahu-557容斥原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Installation failed
- 下一篇: 学考228XK_80计算机,复旦选课学概
