P1008 N的阶乘 mod P

OJ:51Nod

链接:"http://www.51nod.com/Challenge/Problem.html#!#problemId=1008"

题目描述:

输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)
例如:n = 10, P = 11,10! = 3628800
3628800 % 11 = 10

输入:

两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)

输出:

输出N! mod P的结果。

限制条件:

时间:1s     空间: 131072KB

输入样例:

10 11

输出样例:

10

思路:阶乘——一看就觉得很大,10!=3628800,而最大可以去10000-1......那大概是long long long long long long long long也放不了,但是看到后面对P求余,P最大是\(10^9\),也就是说答案不会大于int的范围.......这个时候就想到了每一步都求余防止溢出.......这里就要一点点数学知识了

( a * b) % c == ( ( a % c ) * b ) % c

这个公式很重要,以后还要用到,牢记

C++代码(错误的)

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,ans;
cin>>a>>b;
ans=1%b;
for(int i=2;i<=a;i++)
{
ans=((i%b)*ans)%b;
}
cout<<ans;
return 0;
}

为什么会错呢?明明什么都考虑了

然而,由于求余的结果可能会达到\(10^8\),这个时候再乘以100就爆int的范围了

所以还是要 long long

C++代码(更正)

#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int a,b,ans;
cin>>a>>b;
ans=1%b;
for(int i=2;i<=a;i++)
{
ans=((i%b)*ans)%b;
}
cout<<ans;
return 0;
}

C代码

#include<stdio.h>
int main()
{
long long int a,b,ans;
scanf("%lld %lld",&a,&b);
ans=1%b;
for(int i=2;i<=a;i++)
{
ans=((i%b)*ans)%b;
}
printf("%d",ans);
return 0;
}

51nod OJ P1008 N的阶乘 mod P的更多相关文章

  1. 快速幂的类似问题(51Nod 1008 N的阶乘 mod P)

    下面我们来看一个容易让人蒙圈的问题:N的阶乘 mod P. 51Nod 1008 N的阶乘 mod P 看到这个可能有的人会想起快速幂,快速幂是N的M次方 mod P,这里可能你就要说你不会做了,其实 ...

  2. 51 Nod 1008 N的阶乘 mod P【Java大数乱搞】

    1008 N的阶乘 mod P 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)   例如:n ...

  3. 51nod 1008 N的阶乘 mod P

    输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)   例如:n = 10, P = 11,10! = 3628800 3628800 % 11 = 10   Input 两 ...

  4. 51nod OJ P1000 A+B

    P1000 A+B OJ:51Nod 链接:"http://www.51nod.com/Challenge/Problem.html#!#problemId=1000" 题目描述: ...

  5. N的阶乘 mod P

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)   例如:n = 10, P = 11,10 ...

  6. 九度OJ 1076 N的阶乘 -- 大数运算

    题目地址:http://ac.jobdu.com/problem.php?pid=1076 题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: ...

  7. 九度OJ 1067 n的阶乘 (模拟)

    题目1067:n的阶乘 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5666 解决:2141 题目描写叙述: 输入一个整数n,输出n的阶乘 输入: 一个整数n(1<=n<=2 ...

  8. 51Nod 1058: N的阶乘的长度(斯特林公式)

    1058 N的阶乘的长度  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Inp ...

  9. 【51NOD-0】1008 N的阶乘 mod P

    [算法]简单数学 [题解]多项式展开:(a*b)%p=(a%p*b%p)%p #include<cstdio> #include<algorithm> #define rep( ...

随机推荐

  1. SUBMIT WITHOUT ALV

    data:seltab type table of rsparams, seltab_wa like line of seltab. define add_seltab. if &1 is n ...

  2. MySQL索引原理以及查询优化

    转载自:https://www.cnblogs.com/bypp/p/7755307.html MySQL索引原理以及查询优化 一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且 ...

  3. vue 树形下拉框 亲测 好用

    https://vue-treeselect.js.org/ 顺带说一个开发中使用这个组件遇到的问题,关于回显之后无法修改的问题  找了很长时间 原因是数据类型导致的问题,数组里面应该是数字类型,直接 ...

  4. IDEA cannot resolve symbol “xxxx”

    有缓存 多试两次就可以了. 技术交流群:816227112

  5. Collection<T> 的一个坑

    当前所在的公司偏好使用 Collection<T>(System.Collections.ObjectModel), 这货比起List<T>不仅少了很多实用方法, 而且还有一个 ...

  6. The Swap

    源程序 swap.cpp* 输入文件 swap.in 输出文件 swap.out 时间限制 1s 空间限制 256MB [问题描述] Alice 得到了一个整数, 她将其视作长度为 n 的字符串 S. ...

  7. swift两种获取相册资源PHAsset的路径的方法(绝对路径)

    方法中使用到的phasset就是我们取到的PHAsset对象 方法一: let options = PHVideoRequestOptions() options.version = PHVideoR ...

  8. Numpy Ndarray对象

    Numpy 最重要的一个特点是 N 维数组对象 ndarrary ,它是一系列同类型数据的集合,以 0 下标为开始进行集合中的索引. ndarray 对象是用于存放同类型元素的多维数组. ndarra ...

  9. css3 --linear-gradient-渐变色

    //由上至下变色 background:-moz-linear-gradient( top,#f9b347,#f4ad40,#f9b347);  background:-webkit-gradient ...

  10. 第二阶段第十次spring会议

    昨天我对宠物信息进行了添加和调整. 今天我将继续对宠物信息添加保存按钮. private void button2_Click(object sender, EventArgs e) { Settin ...