链接:https://www.nowcoder.com/acm/contest/115/H

来源:牛客网

晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活。
他总是能从所学的知识散发出奇妙的思维。
今天他想到了一个简单的阶乘问题,
0!= 1
1!= 1
2!= 1 * 2 = 2
3!= 1 * 2 * 3 = 6
4!= 1 * 2 * 3 *4 = 24
5!= 1 * 2 * 3 *4 * 5 = 120
如果 n=1000000000,那么n的阶乘会是多少呢,小P当然知道啦,那么你知道吗?

输入描述:

第一行输入一个整数T(表示样例个数)
接下来T组样例
每组样例一行,输入一个整数N(0<=N<=1000000000)

输出描述:

输出T行
每一行输出N的阶乘 N!(由于这个数比较大,所以只要输出其对1000000007取膜的结果即可)

输入例子:
2
0
1000000000
输出例子:
1
698611116

-->

示例1

输入

2
0
1000000000

输出

1
698611116 因为时间限制,所以这题主要是先打表,在n小于10000000时,电脑求阶乘所需的时间比较小,所以
我们先把1~1000000000之间的数分成100个区间,每个区间有10000000个数字,例如[1,10000000)
[10000000,20000000),[20000000,30000000)......
然后我们现在电脑上把每个区间的第一个数的值求出来,例如10000000!%mod=682498929,20000000!%mod=491101308...
把这些值先存进数组a中,然后每次输入n时就判断在哪个区间,把需要计算的次数缩小在10000000次以下,然后暴力求解。 先把每个区间的第一个值算出来:
#include<stdio.h>
#define ll long long
#define mod 1000000007
ll ans;
int main()
{
ans=;
for(ll i=;i<=;i++)
{
ans=(ans*i)%mod;
if(i%==)
printf("%lld,",ans);
}
return ;
}

682498929,491101308,76479948,723816384,67347853,27368307,625544428,
199888908,888050723,927880474,281863274,661224977,623534362,970055531,261384175,
195888993,66404266,547665832,109838563,933245637,724691727,368925948,268838846,
136026497,112390913,135498044,217544623,419363534,500780548,668123525,128487469,
30977140,522049725,309058615,386027524,189239124,148528617,940567523,917084264,
429277690,996164327,358655417,568392357,780072518,462639908,275105629,909210595,
99199382,703397904,733333339,97830135,608823837,256141983,141827977,696628828,
637939935,811575797,848924691,131772368,724464507,272814771,326159309,456152084,
903466878,92255682,769795511,373745190,606241871,825871994,957939114,435887178,
852304035,663307737,375297772,217598709,624148346,671734977,624500515,748510389,
203191898,423951674,629786193,672850561,814362881,823845496,116667533,256473217,
627655552,245795606,586445753,172114298,193781724,778983779,83868974,315103615,
965785236,492741665,377329025,847549272,698611116

得到上面的数据

最后直接打表计算就可以了

#include<stdio.h>
#include<string.h>
#define ll long long
const ll mod=1e9+;
ll n,t;
int a[]={,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,};
int main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
int k=n/;
ll ans=a[k];
for(ll i=k*+;i<=n;i++)
{
ans=(ans*i)%mod;
}
printf("%lld\n",ans);
}
return ;
}

江西财经大学第一届程序设计竞赛 H题 求大数的阶乘的更多相关文章

  1. 江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  2. 江西财经大学第一届程序设计竞赛 F题 解方程

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  3. 江西财经大学第一届程序设计竞赛 H

    链接:https://www.nowcoder.com/acm/contest/115/H来源:牛客网 题目描述 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所 ...

  4. 江西财经大学第一届程序设计竞赛 G

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 题目描述 周末,小Q喜欢在PU口袋校园上参加各种活动刷绩点,体验丰富多彩的大学生活. 但是每个活 ...

  5. 江西财经大学第一届程序设计竞赛 F

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 题目描述 对于方程 2018 * x ^ 4 + 21 * x + 5 * x ^ 3 + 5 ...

  6. 江西财经大学第一届程序设计竞赛 E

    链接:https://www.nowcoder.com/acm/contest/115/E来源:牛客网 题目描述 当你的好友给你发来一条消息,你的消息列表上就会置顶显示该好友的名字以及该好友发给你的消 ...

  7. 江西财经大学第一届程序设计竞赛 C

    链接:https://www.nowcoder.com/acm/contest/115/C来源:牛客网 题目描述 决赛圈还剩下两个人,“伏地魔”XDD和跑毒进圈的FZL,XDD拿着狙击枪AWM瞄准并准 ...

  8. 江西财经大学第一届程序设计竞赛 B

    链接:https://www.nowcoder.com/acm/contest/115/B来源:牛客网 题目描述 给出一个出生日期,比如:1999-09-09, 问:从出生那一天开始起,到今天2018 ...

  9. 江西财经大学第一届程序设计竞赛 A

    链接:https://www.nowcoder.com/acm/contest/115/A来源:牛客网 题目描述 "挤需体验五番钟,里造会挨上这款游戏!" 怎么可能嘛!当我是傻子吗 ...

随机推荐

  1. Linux MySQL 安装、远程访问和密码重置

    安装: yum install mysql yum install mysql-server yum install mysql-devel 设置开机启动: chkconfig -add mysqld ...

  2. Java中==号与equals()方法的区别

    String str1 = new String("abc"); String str2 = new String("abc"); System.out.pri ...

  3. 翻转单链表 leetcode Reverse Linked List

    翻转一个单链表.这个题目听说很多次了,总感觉肯定不是什么难题. 现在真的有点好高骛远了!总感觉那种很难的算法题才是难题,这种题没必要做.其实眼高手低啊. 这种easy题,我都不能一遍ac,这遇到白板编 ...

  4. THE BOX MODEL

    Review In this lesson, we covered the four properties of the box model: height and width, padding, b ...

  5. Firebird日期时间操作

    最近在使用Firebird数据做 一项目,使用FireBird边用边学.(以下转贴) 查询2007年度以后的,12月份以上的数据记录,datetime为timestamp字段 select * fro ...

  6. C++17尝鲜:结构化绑定声明(Structured Binding Declaration)

    结构化绑定声明 结构化绑定声明,是指在一次声明中同时引入多个变量,同时绑定初始化表达式的各个子对象的语法形式. 结构化绑定声明使用auto来声明多个变量,所有变量都必须用中括号括起来. cv-auto ...

  7. haproxy + nginx + proxy protocol 获得客户真实IP方法

    公司网站架构为: 前面2台HA负载均衡,后面3台Nginx负载均衡反向代理,然后后面有N台WEB服务器 由于要统计IP,需要在WEB服务器日志里体现客户端真实IP 那么问题来了,通过HA代理的HTTP ...

  8. RabbitMQ系列教程之四:路由(Routing)(转载)

    RabbitMQ系列教程之四:路由(Routing) (使用Net客户端) 在上一个教程中,我们构建了一个简单的日志系统,我们能够向许多消息接受者广播发送日志消息. 在本教程中,我们将为其添加一项功能 ...

  9. Linux date命令使用方法

    date命令用来显示或设定以及计算系统的日期和时间.本文主要描述date命令的基本语法和工作中常用的使用方法. date命令语法 用法:date [OPTION]... [+FORMAT] 常用参数: ...

  10. CentOS 6.x 默认源中带了mysql-server,可以使用yum安装。

    1.执行安装命令:yum install mysql-server 2.初始化数据库,使用命令1# service mysqld start   启动MSQL service mysqld stop  ...