/*
hdu 2841
題意大概是
你站在(0,0)點
給你乙個以(11,1)為頂點n*m的方格
每個交點處都有一棵樹
問你能看到幾棵樹
假設有兩棵樹
他們的座標分別為(x1,y1)(x2,y2)(x1>x2 y1>y2)
若(0,0)->(x1,y1)和(0,0)->(x2,y2)兩個向量平行
那麼後面的那個就看不到了
列出平行的式子:
x1=k*x2 y1=k*y2
所以只需要x1 y1互質
那麼就不平行
我們就能看到
以上就是思路
實現方法如下
只要對每一行進行列舉
把每一行能看到多少個求出來再相加就行
每一行怎麼求
我們可以把每個數先進行質因子分解
然後自由組合先算出有公約數(不互質)的有多少組
再用總數減就行————容斥原理
先算出每
*/#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 2147483647
#define n 50
#define pi acos(-1)
#define eps 1e-8
using namespace std;
int work(int a,int b)
if(b>1)
prime[p++]=b;
int res=0;
for(int i=1;i<(1<>j)&1)==0)
continue;
tmp*=prime[j];
cnt++;
}if(cnt%2==0)
res=res-a/tmp;
else
res=res+a/tmp;
}return a-res;
}int main()
return 0;
}
hdu 4336 容斥原理
按照解題報告的提示,用容斥原理實現 for int j bg 1 j另解 概率dp,康哥指導的 include include includeusing namespace std double f 1 21 gl 22 int main int i,j,k,n double fz,fm while...
hdu4135 容斥原理
題意 給出a,b,n,求出 a,b 範圍內與n互素的數字的個數。即b範圍內的不與n互素的數減去a範圍內不與n互素的數,把 1,a 1,b 中不與n互素的數分別求出來,再減掉就是和n互素的數了。那麼首先將n分解質因數,因子和因子的倍數可以被除盡,一定不與n互素,把這些數都記下來,篩法求素數即可 然後把...
hdu 4135 容斥原理
剛接觸,有關因子個數的增加不太弄得好,然後看到了這個神奇的遞迴 ac include includeusing namespace std define ll long long ll a,b,ansa,ansb,ans,p 100 up void dfs int n,bool tag,ll num...