題意:noip2016d2t1
我們考慮將每個數字質因數分解來做即可
線性篩求出所有2000以內的質數讓後直接暴力分解即可,計算c(i,j)是否為k的倍數,最後加上字首和
#include
#include
int w[500],c=0,n,m,t,k,pr[2010]=;
int l[2010],f[2010][10][2];
int s[2010][2010],s[2010][2010];
void mul(int* v,int i,int d)
int main()
for(int j=0;j2000;++j)
} for(int x,i=2;i<=2000;++i)
if(x>1)
} for(int i=0;iif(pr[w[i]]!=i) puts("wrong");
scanf("%d%d",&t,&k);
int v[300];
for(int i=1;i<=2000;++i)
for(int j=i+1;j<=2000;++j) s[i][j]=s[i][j-1];
} for(int a,b,i=0;iscanf("%d%d",&a,&b);
printf("%d\n",s[a][b]);
}}
Jzoj4906 組合數問題
題意 noip2016d2t1 我們考慮將每個數字質因數分解來做即可 線性篩求出所有2000以內的質數讓後直接暴力分解即可,計算c i,j 是否為k的倍數,最後加上字首和 include include int w 500 c 0,n,m,t,k,pr 2010 int l 2010 f 2010 ...
poj 1942 組合數問題
本題很簡單,但處理方法也很特殊,用double來存中間結果,神!同樣的公式,不同的處理方法,效果不同。如 選擇n時一定選小的,節約時間。處理階乘有三種辦法 1 傳統意義上的直接遞迴,n的規模最多到20 太小了,在本題不適用,而且非常慢 2 稍快一點的演算法,就是利用log 化乘為加,n的規模雖然擴充...
NOIP2016 組合數問題
題目描述 第一行有兩個整數t,k,其中t代表該測試點總共有多少組測試資料,k的意義見 問題描述 接下來t行每行兩個整數n,m,其中n,m的意義見 問題描述 t行,每行乙個整數代表答案。輸入樣例 1 1 23 3 輸入樣例 2 2 54 5 6 7 輸出樣例 1 1輸出樣例 2 07 樣例1說明 在所...