博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51Nod 大数阶乘、大数取模
阅读量:4216 次
发布时间:2019-05-26

本文共 1060 字,大约阅读时间需要 3 分钟。

基准时间限制:1 秒 空间限制:131072 KB 分值: 0
收藏
关注
输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
#include
#define MAX 1000000+5 using namespace std;int a[MAX];int main() { int n; scanf("%d",&n); int carry,cnt = 0; a[0] = 1;//别忘记初始化 for(int i = 2; i <= n; ++i){ carry = 0; for(int j = 0; j <= cnt; ++j){ a[j] = a[j]*i+carry; // 模拟 手算每次 先乘 后加上进位(而不是加上进位后乘) carry = a[j]/10000; a[j] %= 10000; } if(carry)//注意 如果 最后有进位的情况 a[++cnt] = carry; } //输出要注意每组是4位(最高的一组单独处理) 其余的需要考虑0的情况输出 printf("%d",a[cnt]); for(int i = cnt-1; i >= 0; --i){ printf("%04d",a[i]); } return 0; }
基准时间限制:1 秒 空间限制:131072 KB 分值: 0
收藏
关注
输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)
例如:n = 10, P = 11,10! = 3628800
3628800 % 11 = 10
Input
两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)
Output
输出N! mod P的结果。
Input示例
10 11
Output示例
10
#include
typedef long long ll; int main() { int n,p; scanf("%d%d",&n,&p); ll ans = 1; for(int i = 1; i <= n; ++i){ ans = ans*i%p;//利用 (a*b)%c = (a%c*b)%c } printf("%d",ans); return 0; }

转载地址:http://jeimi.baihongyu.com/

你可能感兴趣的文章
【屌丝程序的口才逆袭演讲稿50篇】第九篇:春节那些事-过年回家不需要理由【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十一篇:马云乌镇40分钟演讲实录【张振华.Jack】
查看>>
Java并发编程从入门到精通 张振华.Jack --我的书
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Android中Java代码和XML布局效率问题
查看>>
android TextView属性大全(转)
查看>>
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
Conclusion for Accustoming Yourself to C++
查看>>
面试题1:赋值运算函数(offer)
查看>>
Mark : MessagePack简介及使用
查看>>
Mark : hive文件存储格式
查看>>
mark : hadoop 四种压缩格式
查看>>
All Things OpenTSDB
查看>>
单例模式(singleton),工厂方法模式(factory),门面模式(facade)
查看>>
抽象模式,适配器模式(Adapter),模板方法模式(Template method)
查看>>
建造者模式(builder),桥梁模式(bridge mode),命令模式(Command mode)
查看>>
装饰模式(Decorator),迭代器模式(Iterator),组合模式(composite)
查看>>
观察者模式(Observer),责任链模式,访问者模式(Visitor)
查看>>
状态模式(State)
查看>>