HDU2841 Visible Trees (容斥原理)
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2841
題意:
一個人在(0,0)點,然後前面有一個m*n的格子 ,每個格子的節點上有一棵樹,問這個人站在原地能看到多少棵樹
如果兩棵樹在一條直線上那麼只能看到最前面的一棵樹。
分析:
如果一個數的座標為(a,b),那麼座標為(a*k,b*k)的都不能看見,如果a,b有公因子c那麼我們肯定只能看到(a/c,b/c);
因此我們得出結論,能看到的樹的橫縱座標一定互質。那麼我們就可以把問題轉化為,從[1,n]有多少個數與m裡的數互質。
那麼只用把[1,n]裡的數都素因子分解了,然後容斥一下就搞定了。
程式碼如下:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
const int maxn = 100010;
typedef long long LL;
int Prim[maxn],num[maxn][20];
void init()
{
int i,j;
memset(Prim,0,sizeof(Prim));
for(i=1; i<=100000; i++) num[i][0]=0;
for(i=2; i<=100000; i++)
if(Prim[i]==0)
{
num[i][1]=i;
num[i][0]++;
for(j=i*2; j<=100000; j+=i)
{
num[j][++num[j][0]]=i;
Prim[j]=1;
}
}
}
LL dfs(int id,int b,int now)//求不大於b的數中,與now不互質的數的個數;
{
LL ans=0;
for(int i=id;i<=num[now][0];i++)
ans+=b/num[now][i]-dfs(i+1,b/num[now][i],now);
return ans;
}
int main()
{
int m,n,t;
cin>>t;
while(t--){
cin>>m>>n;
init();
long long sum=0;
for(int i=2;i<=m;i++)
sum+=n-dfs(1,n,i);
printf("%I64d\n",sum+n);
}
return 0;
}
相關文章
- 容斥原理
- 【模板】容斥原理
- 容斥原理講解
- 遊戲裡面的容斥原理遊戲
- 容斥原理學習筆記筆記
- 容斥原理——數學知識
- #19. 計數(容斥原理)
- HDU 4059 The Boss on Mars ( 容斥原理)
- HDU4390Number Sequence(容斥原理)
- HDU4407Sum ( 容斥原理)
- 容斥
- HDU 5468 Puzzled Elena(DFS序+容斥原理)
- 反射容斥反射
- bzoj 2655: calc [容斥原理 伯努利數]
- bzoj 3812: 主旋律 [容斥原理 狀壓DP]
- HDU 1695-GCD(容斥原理+尤拉函式)GC函式
- Min-Max 容斥
- HDU 4135 Co-prime(容斥原理+分解質因數)
- cf449D. Jzzhu and Numbers(容斥原理 高維字首和)
- P1447 [NOI2010] 容斥原理
- HDU 4135——Co-prime(容斥原理&&二進位制列舉)
- 有標號DAG計數 [容斥原理 子集反演 組合數學 fft]FFT
- 容斥定理 AtCoder——FizzBuzz Sum Hard
- bzoj1853: [Scoi2010]幸運數字(容斥原理)
- HDU 5072 Coprime (單色三角形問題+容斥原理)
- 利用容斥原理求尤拉計劃565題的S(1E9,2017)
- bzoj1042: [HAOI2008]硬幣購物(Dp+容斥原理)
- [BZOJ4818][Sdoi2017][容斥原理][矩陣優化DP]序列計數矩陣優化
- ZOJ 3868 GCD Expectation (容斥+莫比烏斯反演)GC
- HDU 1695 GCD (容斥 + 莫比烏斯反演)GC
- POJ 3904 Sky Code (容斥+莫比烏斯反演)
- Property "visible" must be accessed with "$data.visible"
- 2014ACM/ICPC亞洲區西安站 F題 color (組合數學,容斥原理)ACM
- jQuery :visiblejQuery
- CodeForces571A. Lengthening Sticks(組合數學-容斥)
- 機率期望進階 + Min-Max容斥 練習題
- Property "visible" must be accessed with "$data.visible" because properties
- Codeforces Gym 100548F Color (組合數+容斥)