题目描述

组合数C(n,m)表示的是从n个物品中选出m个物品的方案数。举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法。根据组合数的定 义,我们可以给出计算组合数的一般公式:

C(n,m)=n!/m!(n-m)!

其中n! = 1 × 2 × · · · × n

小葱想知道如果给定n,m和k,对于所有的0 <= i <= n,0 <= j <= min(i,m)有多少对 (i,j)满足C(i,j)是k的倍数。

输入输出格式

输入格式:

第一行有两个整数t,k,其中t代表该测试点总共有多少组测试数据,k的意义见 【问题描述】。

接下来t行每行两个整数n,m,其中n,m的意义见【问题描述】。

输出格式:

t行,每行一个整数代表答案。

输入输出样例

输入样例#1:

1 2
3 3
输出样例#1:

1
输入样例#2:

2 5
4 5
6 7
输出样例#2:

0
7

说明

【样例1说明】

在所有可能的情况中,只有C(2,1)=2是2的倍数。

【子任务】

這個題,首先暴力思路是質因數分解。(70分)

 #include<cstdio>
int t,k,n,m,ans,pd,a;
int s[]={,,,,,,,};
int bz[],bd[];
int main(){
freopen("problem.in","r",stdin);
freopen("problem.ans","w",stdout);
scanf("%d%d",&t,&k);
for(int i=;i<&&k>=s[i];i++) while(k%s[i]==){k/=s[i];bz[i]++;}
while(t--){
ans=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=i&&j<=m;j++){
pd=;
for(int k=j+;k<=i;k++){
a=k;
for(int l=;l<&&a>=s[l];l++) while(a%s[l]==){a/=s[l];bd[l]++;}
}
for(int k=;k<=i-j;k++){
a=k;
for(int l=;l<&&a>=s[l];l++) while(a%s[l]==){a/=s[l];bd[l]--;}
}
for(int k=;k<;k++){
if(bd[k]<bz[k]) pd=;
bd[k]=;
}
ans+=pd;
}
printf("%d\n",ans);
}
}

暴力

然後,組合數有一個遞推公式,即C(i,j)=C(i-1,j)+C(i-1,j-1),也就是大名鼎鼎的楊輝三角。

 #include<cstdio>
int t,k,n,m,ans;
int c[][];
int main(){
freopen("problem.in","r",stdin);
freopen("problem.ans","w",stdout);
scanf("%d%d",&t,&k);
c[][]=c[][]=;
for(int i=;i<=;i++)
for(int j=;j<=i;j++){
c[i][j]=c[i-][j]+c[i-][j-];
c[i][j]%=k;
}
while(t--){
ans=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=i&&j<=m;j++)
if(!c[i][j]) ++ans;
printf("%d\n",ans);
}
return ;
}

90分

而後提前處理一下,把查詢變成O(1)。

 1 #include<cstdio>
2 int t,k,n,m,a;
3 int c[2010][2010];
4 int ans[2010][2010];
5 int main(){
6 freopen("problem.in","r",stdin);
7 freopen("problem.ans","w",stdout);
8 scanf("%d%d",&t,&k);
9 c[1][0]=c[1][1]=1;
10 for(int i=2;i<=2000;i++)
11 for(int j=0;j<=i;j++){
12 c[i][j]=c[i-1][j]+c[i-1][j-1];
13 c[i][j]%=k;
14 }
15 for(int i=1;i<=2000;i++){
16 a=0;
17 for(int j=0;j<i;j++){
18 if(!c[i][j]) ++a;
19 ans[i][j]=ans[i-1][j]+a;
20 }
21 for(int j=i;j<=2000;j++) ans[i][j]=ans[i][i-1];
22 }
23 while(t--){
24 scanf("%d%d",&n,&m);
25 printf("%d\n",ans[n][m]);
26 }
27 return 0;
28 }

NOIP第二水的題,而後。。。

NOIP2016 D2T1 組合數問題(problem)的更多相关文章

  1. [NOIP2016day2T1] 組合數問題(problem)

    题目描述 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们 ...

  2. 何解決 LinqToExcel 發生「無法載入檔案或組件」問題何解決 LinqToExcel 發生「無法載入檔案或組件」問題

    在自己的主機上透過 Visual Studio 2013 與 IISExpress 開發與測試都還正常,但只要部署到測試機或正式機,就是沒辦法順利執行,卡關許久之後找我協助.我發現錯誤訊息確實很「一般 ...

  3. [亂數] <細說> C/C++ 亂數基本使用與常見問題

    陸陸續續寫了 EA  一.二年,以前亂數引導文回頭看時才發現,怎麼有這麼多細節的錯誤.沒系統. 這篇文章主要引導初學者使用亂數,同時附上常被翻出來討論的議題,C/C++適用,唯以 C 語言撰之. 也由 ...

  4. D. Rescue Nibel! 解析(思維、組合、離散化、差分)

    Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ...

  5. oracle系統表、數據字典介紹與日常問題診斷

    oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...

  6. 【Java算法學習】斐波那契數列問題-兔子產子經典問題

    /** * 用遞推算法求解斐波那契數列:Fn = Fn-2 +Fn-1; */ import java.util.*; public class Fibonacci { public static v ...

  7. [ Eclipse ] [ Problem ] Eclipse 無法開啟問題

    因為 Eclipse 在設定環境的過程掛掉太多次,擷取一些網路上優秀的文章當作備份 http://www.ewdna.com/2013/12/Eclipse-Loading-Workbench.htm ...

  8. (转)約瑟夫問題的兩個O(log n)解法

    約瑟夫問題的兩個O(log n)解法 這個是學習編程時的一個耳熟能詳的問題了: n個人(編號爲0,1,...,n-1)圍成一個圈子,從0號開始依次報數,每數到第m個人,這個人就得自殺, 之後從下個人開 ...

  9. ROHS無鉛問題解答!ROHS IPC SGS

    無鉛smt(smd)問題1. 問Maxim關于無鉛的定義是什么?答無鉛表示在封裝或產品制造中不含鉛(化學符號為Pb).IC封裝中,Pb在外部引腳拋光或電鍍中很常見.對于晶片級封裝(UCSP和倒裝芯片) ...

随机推荐

  1. 【转发】linux yum命令详解

    linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...

  2. Ajax get方法 IE 下乱码

    每个浏览器处理编码的格式不同. ajax使用utf-8来编码发送数据,ie在发送时并没加上charset=utf-8,从而导致乱码(IE默认使用iso-8859-1编码) JavaScript代码: ...

  3. STM32之RTC配置与初始化-rtc.h rtc.c

    <rtc.h> #include "stm32f10x.h" #ifndef _RTC_H #define _RTC_H typedef struct { vu8 ho ...

  4. AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像

    AutoCAD ObjectARX(VC)开发基础与实例教程2014,最新版,光盘镜像 作者:张帆 朱文俊 编著 出版社:中国电力出版社 出版时间:2014年6月 点击一下

  5. (转)tomcat与地址栏图标之研究(多浏览器)

    原文:http://hi.baidu.com/hebo_thu/item/fc8c81bb164f5cee4fc7fd90 tomcat与地址栏图标之研究(多浏览器) 最近在做一个java网络应用程序 ...

  6. CentOS中vsftp安装与配置

    http://blog.chinaunix.net/uid-7271021-id-3086186.html 553 Could not create file 解决办法 [root@localhost ...

  7. Objects and Data Structures

    Date Abstraction Hiding implementation is not just a matter of putting a layer of fucntions between ...

  8. 基于HTTP Live Streaming(HLS) 搭建在线点播系统

    1. 为何要使用HTTP Live Streaming 可以参考wikipedia HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体 网络传输协议.是 ...

  9. Why does my ListView scroll to the top when navigating backwards?

    I’ve seen a few people asking this question. They have a page which contains a ListView and when an ...

  10. 转:DataTable.Compute()用法

    转自:http://www.cnblogs.com/fanyf/archive/2012/05/11/2495919.html一.DataTable.Compute()方法說明如下 作用: 计算用来传 ...