[NOIP2016day2T1] 組合數問題(problem)
题目描述
组合数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 2
3 3
1
2 5
4 5
6 7
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第二水的題,而後。。。
[NOIP2016day2T1] 組合數問題(problem)的更多相关文章
- NOIP2016 D2T1 組合數問題(problem)
题目描述 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们 ...
- 何解決 LinqToExcel 發生「無法載入檔案或組件」問題何解決 LinqToExcel 發生「無法載入檔案或組件」問題
在自己的主機上透過 Visual Studio 2013 與 IISExpress 開發與測試都還正常,但只要部署到測試機或正式機,就是沒辦法順利執行,卡關許久之後找我協助.我發現錯誤訊息確實很「一般 ...
- [亂數] <細說> C/C++ 亂數基本使用與常見問題
陸陸續續寫了 EA 一.二年,以前亂數引導文回頭看時才發現,怎麼有這麼多細節的錯誤.沒系統. 這篇文章主要引導初學者使用亂數,同時附上常被翻出來討論的議題,C/C++適用,唯以 C 語言撰之. 也由 ...
- D. Rescue Nibel! 解析(思維、組合、離散化、差分)
Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ...
- oracle系統表、數據字典介紹與日常問題診斷
oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...
- 【Java算法學習】斐波那契數列問題-兔子產子經典問題
/** * 用遞推算法求解斐波那契數列:Fn = Fn-2 +Fn-1; */ import java.util.*; public class Fibonacci { public static v ...
- [ Eclipse ] [ Problem ] Eclipse 無法開啟問題
因為 Eclipse 在設定環境的過程掛掉太多次,擷取一些網路上優秀的文章當作備份 http://www.ewdna.com/2013/12/Eclipse-Loading-Workbench.htm ...
- (转)約瑟夫問題的兩個O(log n)解法
約瑟夫問題的兩個O(log n)解法 這個是學習編程時的一個耳熟能詳的問題了: n個人(編號爲0,1,...,n-1)圍成一個圈子,從0號開始依次報數,每數到第m個人,這個人就得自殺, 之後從下個人開 ...
- ROHS無鉛問題解答!ROHS IPC SGS
無鉛smt(smd)問題1. 問Maxim關于無鉛的定義是什么?答無鉛表示在封裝或產品制造中不含鉛(化學符號為Pb).IC封裝中,Pb在外部引腳拋光或電鍍中很常見.對于晶片級封裝(UCSP和倒裝芯片) ...
随机推荐
- bzoj3505 [Cqoi2014]数三角形——组合数+容斥
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3505 好题啊好题...好像还曾经出现在什么智力测试卷中来着...当时不会现在还是无法自己推出 ...
- TS流解析 四
一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等 ...
- VPS主机
腾讯云企业认证 备案域名要是顶级域名格式,所以不能是www.blueheartzf.com,而要是blueheartzf.com
- E20170627-gg
ring n. 戒指,指环; 铃声,钟声; 环形物; 拳击场; vi. 按铃,敲钟; 回响; 成环形; rear n. 后部,背面,背后; 臀部; (舰队或军队的) 后方,后尾,殿后部队; ...
- 【HTML5】基于HTML5的高性能动画与游戏
其实这篇文章类似版本早在12年就在网上各处出现了,也随着HTML5的兴起,HTML的新特性也是倍受开发者们追捧,自然相关HTML5的高性能动画与游戏的相关文章也是层出不穷的,笔者也是在12年接触的相关 ...
- ACM_Reverse Bits(反转二进制)
Reverse Bits Time Limit: 2000/1000ms (Java/Others) Problem Description: Reverse bits of a given 32 b ...
- RabbitMQ~消息的产生和管理(15672)
上一讲说了rabbitmq在windows环境的部署,而今天主要说一下消息在产生后,如何去查看消息,事实上,rabbitmq为我们提供了功能强大的管理插件,我们只要开启这个插件即可,它也是一个网站,端 ...
- [转] 64位Oracle 11g R2的客户端连接时报ORA-01019错误
本文转自:http://blog.csdn.net/downmoon/article/details/8038583 在Win8企业版64位环境下,连接Oracle11g 服务端,搞了整整两天,特将过 ...
- 微信自定义分享功能实现Tips
以MVC为例 前台js通过.post()方法传给后台特定Controller当前页面的url,后台获取后,进行处理: 1.获取access_token:https://mp.weixin.qq.com ...
- Count the consecutive zero bits (trailing) on the right with multiply and lookup
我在网上看到了一点神奇的代码,用来计算一个数字末尾连续零的个数. 刚好我在优化一个I2C读写函数(只写入I2C特定bit),觉得这个很有用.经过尝试,确实没问题. 下面我隆重介绍一下: Count t ...