HDNOIP201405杨辉三角
2016.1.27
试题描述
|
杨辉三角是形如如下的数字三角形: 1 1 1 1 2 1 …… 现在想求出杨辉三角第N行的N个数中,有多少个数能被给定的质数p整除。 |
输入
|
一行两个空格隔开的整数N和p
|
输出
|
输出一个整数,表示第N行能被给定的质数p整除的个数
|
输入示例
|
3 2
|
输出示例
|
1
|
其他说明
|
对于60%的数据,N≤30,p≤1000,对于80%的数据,N≤1000,p≤1000,对于100%的数据,N≤〖10〗^9,p≤1000
|
然后就一个一个试呗
- #include<iostream>
- using namespace std;
- int a[],e,ans;
- int main()
- {
- int n,p,b,ct;
- scanf("%d%d",&n,&p);
- b=n-=;
- while(b)
- {
- a[++e]=b%p;
- b/=p;
- }
- for(int i=;i<=n;i++)
- {
- b=i;ct=;
- while(b)
- {
- if(b%p>a[ct]) {ans+=;break;}
- else {ct++;b/=p;}
- }
- }
- printf("%d",ans);
- }
然后果断TLE
然后根据杨辉三角的对称性,砍一半
- #include<iostream>
- using namespace std;
- int a[],e,ans;
- int main()
- {
- int n,p,b,ct;
- scanf("%d%d",&n,&p);
- b=n-=;
- while(b)
- {
- a[++e]=b%p;
- b/=p;
- }
- for(int i=;i<(n+)/;i++)
- {
- b=i;ct=;
- while(b)
- {
- if(b%p>a[ct]) {ans+=;break;}
- else {ct++;b/=p;}
- }
- }
- ans*=;
- if(n+&)
- {
- b=n/;ct=;
- while(b)
- {
- if(b%p>a[ct]) {ans+=;break;}
- else {ct++;b/=p;}
- }
- }
- printf("%d",ans);
- }
然并卵,依旧TLE
于是机智的我想到了构造
还想到了状态压缩
就是二进制某一位为1表示构造的数在p进制下该位上比n在对应位上大
- #include<iostream>
- using namespace std;
- int a[],e,ans;
- int main()
- {
- int n,p,b,ct;
- scanf("%d%d",&n,&p);
- b=n-=;
- while(b)
- {
- a[++e]=b%p;
- b/=p;
- }
- for(int t = e- ; t >= ; t-- )
- {
- for(int i = ( << t ) - ; i >= ; i-- )
- {
- b=i;ct=a[t+];
- for(int j = t- ; j >= ; j-- )
- {
- if(<<j&b) ct*=p--a[j+];
- else ct*=a[j+]+;
- }
- ans+=ct;
- }
- }
- printf("%d",ans);
- }
AC后激动的我瞬间觉得我有做神犇的潜质
但我发现其他人的代码都特短。。。
我方了
冷静后,发现我傻*了
明明可以反着算。。。要知道根据卢卡斯定理构造模p不等于0的数有多简单。。。
看了代码瞬间就懂的
AC代码:
- #include<iostream>
- using namespace std;
- int e,ans=;
- int main()
- {
- int n,p,b;
- scanf("%d%d",&n,&p);
- b=n-;
- while(b)
- {
- ans*=b%p+;
- b/=p;
- }
- printf("%d",n-ans);
- }
HDNOIP201405杨辉三角的更多相关文章
- [LeetCode] Pascal's Triangle II 杨辉三角之二
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- [LeetCode] Pascal's Triangle 杨辉三角
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...
- POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]
Irrelevant Elements Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2407 Accepted: 59 ...
- python生成器实现杨辉三角
def triangels(): """ 杨辉三角 """ lst = [1] n_count = 2 # 下一行列表长度 while Tr ...
- python 生成器生成杨辉三角
用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...
- Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
- POJ3187Backward Digit Sums[杨辉三角]
Backward Digit Sums Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6350 Accepted: 36 ...
- 杨辉三角用java实现
代码如下: public class ErArray { public static void main(String[] args) { //杨辉三角 int[][] num = new int[1 ...
- python 杨辉三角
前提:端点的数为1. 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行的数字有n项. 第n行数字和为2n-1. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同 ...
随机推荐
- debain 8安装为知笔记(how to install wiznote in debain 8)
刚装了debain8后想安装为知笔记,百度之后发现为知笔记原来是开源软件.代码托管在github上:https://github.com/WizTeam/WizQTClient 但是上面只有Ubunt ...
- myeclipse里的调试快捷键
好多时候在调试代码时,有的时候只会用F5,其他的快捷键却一概不知.今天百度查了一下其他快捷键调试的作用,总结如下 F5 (setp into ): 跳入当前执行的方法中 F6 (step over): ...
- 最短路径问题——floyd算法
floyd算法和之前讲的bellman算法.dijkstra算法最大的不同在于它所处理的终于不再是单源问题了,floyd可以解决任何点到点之间的最短路径问题,个人觉得floyd是最简单最好用的一种算法 ...
- C堆栈入门
原文:http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html 格式和部分内容稍作修改 ...
- win32 wndproc 返回值
LRESULT CALLBACK WndProc(...) { case WM_CREATE: .... return 0; case WM_DESTROY: PostQuitMessage (0) ...
- NLP概述
1,词法分析 待续 2,文本分类 文本表示: 重点是贝叶斯模型:二项表示法和多项表示法.(向量维度为词库大小,一个是01,一个是频次).模型重点在于化后验为先验. 还有其他模型:机器学习模型,分布式模 ...
- Kindle Unlimited上的技术书籍
直达链接:Kindle Unlimited 前不久,亚马逊在中国也推出了电子书包月服务.消息不灵通的我过了好久才看到这个消息,随后第一时间上官网查看具体情况. ...
- T24基础-基本命令(1)
如果你不知道什么是T24,那这篇文章对你意义不大.如果你所在银行IT刚好就准备使用或已经使用T24作为银行核心系统,那我的文章对你会很有帮助. 1. LIST 这个语句相当于SQL里的“select ...
- 用Join子句进行分组联接
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- NIO NIO.2
An NIO.2 primer, Part 1: The asynchronous channel APIs http://blog.arganzheng.me/posts/java-network- ...