大水題 (容斥原理)
阿新 • • 發佈:2019-01-09
題目描述
給出一個數n,求1到n中,有多少個數不是2 5 11 13的倍數。
輸入描述:
本題有多組輸入
每行一個數n,1<=n<=10^18.
輸出描述:
每行輸出輸出不是2 5 11 13的倍數的數共有多少
容斥係數:奇正偶負.
#include<bits/stdc++.h> using namespace std; int a[4]= {2,5,11,13}; long long que[50]; long long f(long long n) { long long t=0,sum=0; que[t++]=-1; for(int i=0; i<4; i++) { long long k=t; for(int j=0; j<k; j++) que[t++]=que[j]*a[i]*(-1); } for(int i=1; i<t; i++) sum+=n/que[i]; return sum; } int main() { long long n; while(scanf("%lld",&n)==1) { int ans=f(n); printf("%lld\n",n-ans); } return 0; }