Problem 2020 组合(FOJ)
2015-08-12 08:07
316 查看
Problem 2020 组合
Accept: 714 Submit: 1724
View Code
Accept: 714 Submit: 1724
Time Limit: 1000 mSec Memory Limit : 32768 KB
#include <cstdio> #include <iostream> #include <sstream> #include <cmath> #include <cstring> #include <cstdlib> #include <string> #include <vector> #include <map> #include <set> #include <queue> #include <stack> #include <algorithm> using namespace std; #define ll long long #define _cle(m, a) memset(m, a, sizeof(m)) #define repu(i, a, b) for(int i = a; i < b; i++) #define repd(i, a, b) for(int i = b; i >= a; i--) #define sfi(n) scanf("%d", &n) #define sfl(n) scanf("%I64d", &n) #define pfi(n) printf("%d\n", n) #define pfl(n) printf("%I64d\n", n) #define MAXN 1000005 ll quickpow(ll m, ll n , ll k){ ll ans = 1; while(n){ if(n & 1)//如果n是奇数 ans = (ans * m) % k; n = n >> 1;//位运算“右移1类似除2” m = (m * m) % k; } return ans; } //ll quickpow(ll a, ll b, ll p) //{ // ll ans = 1; // a %= p; // while(b) // { // if(b & 1) // { // ans = ans * a % p; // b--; // } // b >>= 1; // a = a * a % p; // } // return ans; //} ll C(ll n, ll m, ll p) { if(m > n) return 0; ll ans = 1; for(int i = 1; i <= m; i++) { ll a = (n - m + i) % p; ll b = i % p; ans = ans * (a * quickpow(b, p - 2, p) % p) % p; } return ans; } ll Lucas(ll n, ll m, ll p) { if(m == 0) return 1; else return (C(n % p, m % p, p) * Lucas(n / p, m / p, p)) % p; } int main() { int T; sfi(T); while(T--) { ll n, m, p; sfl(n), sfl(m), sfl(p); pfl(Lucas(n, m, p)); } return 0; }
View Code
相关文章推荐
- 设计模式 它 中间人
- vim note(3)
- 黑马程序员——C语言笔记之数组
- Sqlite学习笔记(一)&&编译安装
- 34.tableView的编辑
- 一小时内破解16位强密码
- 修改Tomcat内存大小
- 学英语从背单词开始,但背单词要适可而止
- 零基础学python-2.9 代码块与缩进
- 零基础学python-2.8 字典
- 零基础学python-2.8 字典
- 零基础学python-2.9 代码块与缩进
- 30个糟糕的程序员抵不过一款好工具
- 结构体,联合体,内存分配
- Node.js详细解析
- 解析大型.NET ERP系统 多国语言实现
- CSS hack
- PHP中“简单工厂模式”实例讲解
- 字符串复制
- 如何利用lib进行分类