hdu 3304 Interesting Yang Yui Triangle



题意:

给出P,N,问第N行的斐波那契数模P不等于0的有多少个?



限制:

P < 1000,N <= 10^9



思路:

lucas定理。

假设:

n = a[k]*p^k + a[k-1]*p^(k-1) + ... + a[1]*p + a[0]

m = b[k]*p^k + b[k-1]*p^(k-1) + ... + b[1]*p + b[0]

则:

C(n,m) = pe(i=0~k,C(a[i],b[i]))%p 当中pe表示连乘符号。





因为n已经确定,所以a[i] (0 <= i <= k)已经确定。所以我们仅仅须要找出每一个a[i]有多少种b[i]。使得C(a[i],b[i])%P!=0,暴力一遍就能够了。

/*hdu 3304 Interesting Yang Yui Triangle
题意:
给出P,N,问第N行的斐波那契数模P不等于0的有多少个?
限制:
P < 1000,N <= 10^9
思路:
lucas定理。
假设:
n = a[k]*p^k + a[k-1]*p^(k-1) + ... + a[1]*p + a[0]
m = b[k]*p^k + b[k-1]*p^(k-1) + ... + b[1]*p + b[0]
则:
C(n,m) = pe(i=0~k,C(a[i],b[i]))%p 当中pe表示连乘符号。 因为n已经确定,所以a[i] (0 <= i <= k)已经确定,所以我们仅仅须要找出每一个a[i]有多少种b[i],使得C(a[i],b[i])%P!=0,暴力一遍就能够了。
*/
#include<iostream>
#include<cstdio>
using namespace std;
#define LL long long
const int MOD=10000;
const int N=105;
int a[N];
int cnt=0;
int ny[N];
LL inv(LL a,LL m){
LL p=1,q=0,b=m,c,d;
while(b>0){
c=a/b;
d=a; a=b; b=d%b;
d=p; p=q; q=d-c*q;
}
return p<0? p+m:p;
} void predo(int p){
ny[0]=1;
for(int i=1;i<p;++i){
ny[i]=inv(i,p);
}
}
LL deal(int x,int p){
LL ret=0;
LL cur=1%p;
if(cur) ++ret;
for(int i=1;i<=x;++i){
cur=cur*ny[i]%p*(x-i+1)%p;
if(cur) ++ret;
}
return ret;
}
void gao(int p, int n){
cnt=0;
while(n){
a[cnt++]=n%p;
n/=p;
}
LL ans=1;
for(int i=0;i<cnt;++i){
ans=ans*deal(a[i],p)%MOD;
}
printf("%04lld\n",ans);
}
int main(){
int p, n;
int cas=0;
while(scanf("%d%d", &p, &n) && (p||n)){
predo(p);
printf("Case %d: ",++cas);
gao(p, n);
}
return 0;
}

hdu 3304 Interesting Yang Yui Triangle的更多相关文章

  1. HDU 3304 Interesting Yang Yui Triangle lucas定理

    输入p n 求杨辉三角的第n+1行不能被p整除的数有多少个 Lucas定理: A.B是非负整数,p是质数.AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0] ...

  2. Interesting Yang Yui Triangle(hdu3304)

    Interesting Yang Yui Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  3. UVALive - 3700 Interesting Yang Hui Triangle

    题目大意就是求一下 杨辉三角的第N行中不能被P整除的有多少个. 直接卢卡斯定理一下就行啦. #include<bits/stdc++.h> #define ll long long usi ...

  4. hdu 2426 Interesting Housing Problem 最大权匹配KM算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2426 For any school, it is hard to find a feasible ac ...

  5. HDU 2426 Interesting Housing Problem(二分图最佳匹配)

    http://acm.hdu.edu.cn/showproblem.php?pid=2426 题意:每n个学生和m个房间,现在要为每个学生安排一个房间居住,每个学生对于一些房间有一些满意度,如果满意度 ...

  6. HDU 多校对抗赛 C Triangle Partition

    Triangle Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Oth ...

  7. hdu 2814 Interesting Fibonacci

    pid=2814">点击此处就可以传送 hdu 2814 题目大意:就是给你两个函数,一个是F(n) = F(n-1) + F(n-2), F(0) = 0, F(1) = 1; 还有 ...

  8. HDU 6222 Heron and His Triangle (pell 方程)

    题面(本人翻译) A triangle is a Heron's triangle if it satisfies that the side lengths of it are consecutiv ...

  9. HDU 5785 Interesting

    题目: 大概说给一个字符串,找到其所有子串[i...k]满足它是由两个回文串拼成的,求Σi*k. 分析: 用val[1][i]表示以i结尾的回文串的起始位置的和val[0][i]表示以i起始的回文串的 ...

随机推荐

  1. [转载] Spring3.1 Cache注解

    需要感慨一下,spring3.0时丢弃了2.5时的spring-modules-cache.jar,致使无法使用spring来方便的管理cache注解,好在3.1.M1中增加了对cache注解的支持, ...

  2. entity framework 去缓存

    MSDN上对MergeOption枚举的定义为: 成员名称 说明 AppendOnly 不会从数据源加载对象上下文中已存在的对象.这是查询或调用 EntityCollection<(Of < ...

  3. linux之misc及使用misc创建字符设备

    1:linux字符设备及udev 1.1字符设备 字符设备就是:一个一个字节来进行访问的,不能对字符设备进行随机读写.简单字符设备创建实例如下: #include <linux/module.h ...

  4. SqlServer数据库1433端口问题1

    在本地使用telnet ip  1433 命令测试数据库1433端口是否打开,总是提示错误,根据网上查找资料总结了如下两点思路供参考,欢迎指正! (1)第一种情况可能是"Telnet客户端& ...

  5. 使用JEECG过程中的问题汇总(持续更新)

    1.首次启动Tomcat服务时,控制台信息提示请使用SQL Server 2005或更高版本. <dependency> <groupId>org.jeecgframework ...

  6. WPF一段代码搞定所有的点击事件

    用一个方法来控制转发所有的点击事件,界面图如下:    <Page x:Class="WPFNavigate.Index" xmlns="http://schema ...

  7. 绿化和卸载 DOS 批处理

    @ECHO OFF&PUSHD %~DP0 &TITLE 绿化和选项 mode con cols= lines= color 2F Rd >NUL Md >NUL||(Ec ...

  8. [Tools] Unlock TypeScript's Features in Vanilla JS with @ts-check and JSDoc

    TypeScript can help you with your plain JavaScript files if you add a simple //@ts-check comment. Th ...

  9. poj 2236 Wireless Network 【并查集】

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 16832   Accepted: 706 ...

  10. 并发编程系列小结(线程安全,synchronized,脏读,线程间的通信wait/notify,线程的三种实现方式Demo,可替代wait/notify的方法)

    线程安全: 当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法就是线程安全的) synchronized: 可以在任意对象或方法上加锁,而加锁的这段代码称为 ...