GCC编译器是一个由GNU项目维护的编译系统,它支持多种编程语言的编译。但是它并不包含数学运算符“!”。在数学中,这个符号代表阶乘。表达式n!的意思是从1到n的所有整数的乘积。

例如,4!=4*3*2*1=24. (0!定义为1) 现在请你写程序计算一下 (0! + 1! + 2! + 3! + 4! + ... + n!)%m。

 

Input

第一行是一个整数T,代表了测试数据的组数。

每组测试数据单独一行,包括一个整数n和m,用一个空格隔开。

0 < T <= 20 0 <= n < 10^100 0 < m <= 10000

 

Output

对应每组输入,单独输出一行,给出(0! + 1! + 2! + 3! + 4! + ... + n!)%m的结果。

 

Sample Input

1
10 1017

Sample Output

424

每算一次取一次余有效减少运算量。
 #include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
long m;
long n = ;
char ch[];
int num, i; cin >> num;
for (int test = ; test <= num; test++)
{
scanf("%s %ld", ch, &m);
for (i = ; ch[i] != '\0'; i++)
;
int len = i;
if(len>=)
{
n=m-;
}
else
{
int k = ;
n = ch[len-]-'';
for (int j = len-; j >= ; --j)
{
n += long((ch[j] - '') * pow(10.0, double(k)));
k ++;
if (n >= m)
{
n = m-;
break;
}
}
}
long long s = ;
for (i = n; i >= ; i--)
{
s = ( + i * s) % m;
//s = 1 % m + ((i % m) * (s % m)) % m;
}
s %= m;
cout << s << endl;
}
return ;
}

暑假热身 A. GCC的更多相关文章

  1. 暑假热身 E. 无聊的LSY

    LSY大牛没事就爱玩游戏,包括很多很无聊的游戏.某日,LSY大牛又找到了一个无聊的游戏:每一局游戏的开始,LSY大牛将代表自己的棋子放在一个线性棋盘的最左端(第0个格子,可以认为向右端无限延伸),接着 ...

  2. 暑假热身 D. 条形码设计

    校ACM队准备筹划向学校批请一个专用机房.但是为了防止它变成公用机房,FL建议采用刷卡进入的办法,她设计了一种条形码,每人都对应一个.这种大小为2*n的条形码由以下三种元素构成:1*2.2*1.2*2 ...

  3. 暑假热身 B. 下载测速

    最近,nono终于结束了每年一次的为期12个月的冬眠,醒来的第一件事就是——看电影!!nono发现最近一年出现了各种很好很强大的电影,例如这个.这个.还有这个. 于是nono直接把这些电影全部扔进了下 ...

  4. WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))

    第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...

  5. 停下来,回头看 ——记2020BUAA软工第一次作业-热身!

    description: 'Mar 1st, 2020 - Mar 3rd, 2020' 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 第一次作 ...

  6. BUAA软件工程热身作业

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...

  7. 【BUAA 软工热身作业】继往开来,勇攀高峰

    项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:热身作业,阅读并撰写博客 作业要求 课程目标 学习大规模软件开发的技巧与方法,锻炼开发能力 作业目标 学习前辈经 ...

  8. BUAA_2020_软件工程_热身作业

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 热身作业要求 我在这个课程的目标 了解软件工程的技术,掌握工程化开发的能力 这个作业在哪个具体方面 ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议[正确操作字符串、使用默认转型方法、却别对待强制转换与as和is]

    前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理解的东西,有些地方可能理解的不太到位,还望指正. 建议1. ...

  2. 如何引用XML文件生成C#类

    目录 XSD File Generate Class File Simply. 1 Why use XSD file to create C# classes?... 2 How to convert ...

  3. 网站开发技巧, 使用byte[]持久化用户个性设置

    场景, 网站用户的个性化配置较多, 而且容易发生增加和改变, 如何在数据库保存是个问题. 为了避免数据库表字段经常变更, 我们设计在表增加一个varbinary(max)字段存储个性化配置. 个性化的 ...

  4. 自定义的 ListBoxItem 自适应ListBox的宽度

    主要是要设置HorizontalContentAlignment的值,而不是HorizontalAlignment <ListBox x:Name="xxx"> < ...

  5. WampServer集成环境安装与配置

    实习到了第三个礼拜了,原来我们小组是以开发php为主的,我们项目的服务器也是用php做的,因此我觉得很有必要学一下php的相关知识,首先当然是搭建环境了,写篇博客分享下经验. 目录: 一.软件下载 二 ...

  6. new-nav-js

    'use strict';define([ 'jquery'], function($) { var nav = { init : function() { $("#burger-menu& ...

  7. MVC学习Day02之校验

    MVC校验有两种方法: 方法一:自己动手写js---------略 方法二: l在View的页面中,首先指定页面强类型@model 类型 l使用Html.***For(model=>model. ...

  8. 似然估计中为什么要取对数以GMM为例

    1.往往假设特征之间独立同分布,那么似然函数往往是连城形式,直接求骗到不好搞,根据log可以把连乘变为连加. 2.另外概率值是小数,多个小数相乘容易赵成浮点数下溢,去log变为连加可以避免这个问题. ...

  9. 【poj2187】 Beauty Contest

    http://poj.org/problem?id=2187 (题目链接) 题意 求点集上两点间最长距离 Solution 凸包+旋转卡壳. 旋转卡壳是看起来很难,但是很好意会也很好实现的算法,但是要 ...

  10. poj1631Bridging signals(最长单调递增子序列 nlgn)

    Bridging signals Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12251   Accepted: 6687 ...