济南学习 Day 3 T1 am
NP(np)
Time Limit:1000ms Memory Limit:64MB
题目描述
LYK 喜欢研究一些比较困难的问题,比如 np 问题。
这次它又遇到一个棘手的 np 问题。问题是这个样子的:有两个数 n 和 p,求 n 的阶乘
对 p 取模后的结果。
LYK 觉得所有 np 问题都是没有多项式复杂度的算法的, 所以它打算求助即将要参加 noip
的你,帮帮 LYK 吧!
输入格式(np.in)
输入一行两个整数 n,p。
输出格式(np.out)
输出一行一个整数表示答案。
输入样例
3 4
输出样例
2
数据范围
对于 20%的数据:n,p<=5。
对于 40%的数据:n,p<=1000。
对于 60%的数据:n,p<=10000000。
对于 80%的数据:n<=10^18,p<=10000000。
对于另外 20%的数据:n<=10^18,p=1000000007。
其中大致有 50%的数据满足 n>=p。
#include<cstdio>
#define name "np"
#define ll long long
using namespace std;
const int a[]={,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,};
const int mod=1e9+;
const int sz=1e7;
ll n,p;
ll ans=;
int main(){
scanf("%I64d%I64d",&n,&p);
if(n>=p){puts("");return ;}// 比较好想的一个暴力,但确实有用 并且用处很大
if(p==mod){// 分段打表
n<sz?ans=:ans=a[n/sz];
for(ll i=n/sz*sz+;i<=n;i++) ans=ans*i%p;
printf("%I64d",ans);
return ;
}
for(ll i=;i<=n;i++) ans=ans*i%p;
printf("%I64d",ans);
return ;
}
分段打表~~
济南学习 Day 3 T1 am的更多相关文章
- 济南学习 Day 5 T1 pm
欧拉函数(phi)题目描述: 已知(N),求phi(N). 输入说明: 正整数N. 输出说明: 输出phi(N). 样例输入: 8 样例输出: 4 数据范围: 对于20%的数据,N<=10^5 ...
- 济南学习 Day 4 T1 pm
幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...
- 济南学习 Day 4 T1 am
完美的序列(sequence)Time Limit:1000ms Memory Limit:64MB题目描述LYK 认为一个完美的序列要满足这样的条件:对于任意两个位置上的数都不相同.然而并不是所有的 ...
- 济南学习 Day 3 T1 pm
巧克力棒(chocolate)Time Limit:1000ms Memory Limit:64MB题目描述LYK 找到了一根巧克力棒,但是这根巧克力棒太长了,LYK 无法一口吞进去.具体地,这根巧克 ...
- 2016.10.30 济南学习 Day2 下午 T1
他 [问题描述] 一张长度为N的纸带,我们可以从左至右编号为0 − N(纸带最左端标号为 0).现在有M次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带 的长度是多少. [输入格式] 第一行 ...
- 济南学习 Day 5 T1 晚
取模(mod) [题目描述] 有一个整数a和n个整数b_1, …, b_n.在这些数中选出若干个数并重新排列,得到c_1,…, c_r.我们想保证a mod c_1 mod c_2 mod … mod ...
- 济南学习 Day 5 T1 am
炮(cannon)[题目描述]众所周知,双炮叠叠将是中国象棋中很厉害的一招必杀技.炮吃子时必须隔一个棋子跳吃,即俗称“炮打隔子”. 炮跟炮显然不能在一起打起来,于是rly一天借来了许多许多的炮在棋盘上 ...
- 济南学习 Day2 T1 am
T1 题意:从1− n中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数 最大可能是多少. 解析: 1. 质因数分解 2. 1->n用质因数指数的相加的形式将1*n累乘起来 3. ...
- 济南学习 Day1 T1 am
题意:给你两个日期,问这两个日期差了多少毫秒 #include<cstdio> #include<cstring> #include<ctime> #include ...
随机推荐
- javascript 事件相关
1.添加事件 >基本注册方式 <button id="info">click me!</button> var span = document.get ...
- debian7 更换GCC版本
最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默认gcc使用的是gcc-4.7,可能是编译器 ...
- python 复杂表达式,以及表单的处理
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } def generate_tr(name, score): if score < 60: return '& ...
- Nodejs新建博客练习(一)安装express并新建项目
安装express npm install -g express-generator 新建工程 express blog //新建项目 cd blog && npm install / ...
- windws 安装jdk
(1) 到官网下载好jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html (2 ...
- Java Script基础(十二) 正则表达式
一.正则表达式中常用的符号 虽然可以使用string函数来完成验证,但是这种验证方式不够严谨,而且编写比较麻烦.而正则表达式是一种描述字符模式的对象,由一些特殊的符号组成,其组成的字母模式用来匹配各种 ...
- mybatis--MapperScannerConfigurer
一般我们这样配置 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryB ...
- javascript 特性
作用域: javascript的作用域称为静态作用域,在定义语法上就能确认了,而不是运行时. if (true) { var i = 'moersing' } console.log(i); //可以 ...
- ionic中input框禁止输入问题
其实这个问题在之后沥青思路之后觉得还是挺好实现的,没有思路的时候真是找不到头绪~ 功能的描述为:当输入框中没有内容时,允许用户编辑:当其中有内容时不允许用户编辑,只有当用户点击编辑按钮后,才可允许编辑 ...
- SVN管理规范
命名规范 tags 正式版 REL-X.X.X branches 发版前 RB-X.X.X 新功能 TRY-XXX 修BUG BUG-XXXX trunk 开发 使用注意事项 负责而谨慎地提交自己的代 ...