/****************************************************
这题要求n的阶乘的位数,如果n较大时,n的阶乘必将是一个
很大的数,题中说1<=n<10000000,当n=10000000时可以说n
的阶乘将是一个非常巨大的数字,对于处理大数的问题,我
们一般用字符串,这题当n取最大值时,就是一千万个数字相
乘的积,太大了,就算保存在字符串中都有一点困难,而且
一千万个数字相乘是会涉及到大数的乘法,大数的乘法是比较
耗时的,就算计算出结果一般也会超时。这让我们不得不抛弃
这种直接的方法。
再想一下,这题是要求n的阶乘的位数,而n的阶乘是n个数的
乘积,那么要是我们能把这个问题分解就好了。
在这之前,我们必须要知道一个知识,任意一个正整数a的位数
等于(int)log10(a) + 1;为什么呢?下面给大家推导一下:
对于任意一个给定的正整数a,
假设10^(x-1)<=a<10^x,那么显然a的位数为x位,
又因为
log10(10^(x-1))<=log10(a)<(log10(10^x))
即x-1<=log10(a)<x
则(int)log10(a)=x-1,
即(int)log10(a)+1=x
即a的位数是(int)log10(a)+1
我们知道了一个正整数a的位数等于(int)log10(a) + 1,
现在来求n的阶乘的位数:
假设A=n!=1*2*3*......*n,那么我们要求的就是
(int)log10(A)+1,而:
log10(A)
=log10(1*2*3*......n)  (根据log10(a*b) = log10(a) + log10(b)有)
=log10(1)+log10(2)+log10(3)+......+log10(n)
现在我们终于找到方法,问题解决了,我们将求n的阶乘的位
数分解成了求n个数对10取对数的和,并且对于其中任意一个数,
都在正常的数字范围之类。
总结一下:n的阶乘的位数等于
(int)(log10(1)+log10(2)+log10(3)+......+log10(n)) + 1
根据这个思路我们很容易写出程序
****************************************************/
#include<stdio.h>
#include<math.h>
int jiecheng(double a)
{
double i, b=1;
for(i=1; i<=a; i++)
{
b = b+log10(i);
}
return (int)b;
}
int main()
{
double b;
int a, n, m, i, j;
while(scanf("%d", &n)!=EOF)
{
for(i=0; i<n; i++)
{
scanf("%lf", &b);
a = jiecheng(b);
printf("%d\n", a);
}
}
}

杭州电子科技大学ACM 1018相关推荐

  1. 杭电信工计算机专业浙江省排名第几,2017杭州电子科技大学专业排名_杭州电子科技大学专业排行榜(2)...

    杭州电子科技大学怎么样,到底好不好 杭州电子科技大学是一所电子信息特色突出,经管学科优势明显,工.理.经.管.文.法.艺等多学科相互渗透的教学研究型大学.2015年被列为浙江省重点建设高校.学校现有下 ...

  2. 杭电计算机学院老师,杭州电子科技大学计算机学院导师教师师资介绍简介-李平...

    杭州电子科技大学计算机学院导师教师师资介绍简介-李平本站小编 Free考研考试/2021-04-11 李 平 副教授 硕士生导师 计算机科学与技术 机器学习,计算机视觉,媒体计算 lpcs@hdu.e ...

  3. 杭电计算机学院老师,杭州电子科技大学计算机学院导师教师师资介绍简介-余宙...

    杭州电子科技大学计算机学院导师教师师资介绍简介-余宙本站小编 Free考研考试/2021-04-11 余宙 副教授 硕士生导师 计算机科学与技术 人工智能.多媒体内容分析 yuz@hdu.edu.cn ...

  4. 杭州电子科技大学计算机组成原理期末试卷,杭州电子科技大学计算机组成原理期末样卷(A)...

    组成样卷A卷 杭州电子科技大学学生考试卷(A)卷 一.单项选择题(20分,每题1分) 1.完整的计算机系统应包括() A.运算器.存储器.控制器 B.外设和主机 C.主机和实用程序 D.配套的硬件设备 ...

  5. 杭州电子科技大学保研计算机,杭州电子科技大学计算机学院软件工程(专业学位)保研条件...

    杭州电子科技大学计算机学院软件工程(专业学位)保研条件信息,是考研之前需要获取相应的考研信息,比如考试大纲.招考专业.招考目录等等基本信息,这些内容是进行考研前期工作的必要准备.考生可以从各院校的研招 ...

  6. 杭州电子科技大学保研计算机,杭州电子科技大学计算机学院计算机科学与技术(一级学科)保研细则...

    杭州电子科技大学计算机学院计算机科学与技术(一级学科)保研细则信息,是考研之前需要获取相应的考研信息,比如考试大纲.招考专业.招考目录等等基本信息,这些内容是进行考研前期工作的必要准备.考生可以从各院 ...

  7. 杭电考研计算机专业课_杭州电子科技大学计算机考研专业课平均分76.03,国家线复试是这个原因!...

    杭电计算机学院是计算机类报考热门,2019考研英语数学开始统一采用英语一数学一,不分学硕专硕还是非全日制:今年复试线已出,除计算机技术专硕复试线280分,高于国家线,其余专业均是国家线270分复试: ...

  8. 三个用户在同一系统中同时对他们的c语言,杭州电子科技大学学生考试卷2013年操作系统试卷(2份,有答案)...

    内容简介: 杭州电子科技大学学生考试卷2013年操作系统试卷(2份,有答案) 杭州电子科技大学学生考试卷(A )卷 一.判断题(共10分,每小题1分,正确的打√,错误的打×) 1.分布式操作系统和网络 ...

  9. 杭电java期末试卷2015_2014年杭州电子科技大学Java期末试卷.doc

    2014年杭州电子科技大学Java期末试卷.doc 杭州电子科技大学学生考试卷( A )卷 考试课程Java语言程序设计考试日期2014年 6月 16日成 绩课程号教师号任课教师姓名考生姓名学号(8位 ...

  10. 计算机考研408的优势和劣势,21考研:杭州电子科技大学计算机改考408!透露2个信号,咋整?...

    原标题:21考研:杭州电子科技大学计算机改考408!透露2个信号,咋整? 小伙伴们,浙江计算机考研的大事件来了! 杭州电子科技大学计算机学院发布公告,2021考研所有专业的初试科目改考计算机408! ...

最新文章

  1. 四轴飞行器实践教程第1章什么是飞行器
  2. java泛型反映调用方法体内类型引用问题
  3. Android Handler消息传递机制
  4. matlab中step_使用MATLAB中bertool进行通信仿真
  5. Geotools简介以及quickstsrt加载shp文件并显示
  6. jira集成开发代码_7种JIRA集成可优化您的Java开发流程
  7. EularProject 39:给周长推断构成直角三角形个数
  8. 自然语言处理(NLP)语义分析--文本分类、情感分析、意图识别
  9. Spring入门到精通:第二章 IOC容器(XML方式):7.IOC容器Bean管理XML方式-bean作用域
  10. 华硕笔记本电脑重装系统后不能读取usb,不能上网
  11. php小卖铺源码,PHP自动化售货发卡网源码-小酒资源
  12. 通俗易懂【Springboot】 单文件下载和批量下载(多个文件合成一个压缩包下载)
  13. 微信小程序---实现tab选项卡
  14. Python正则表达式模式
  15. 关于车联网的调查:网络架构与应用
  16. 拍照翻译软件 拍照识别 云脉慧眼
  17. JSP招标投标管理系统JSP企业招标管理系统JSP网上招标管理系统JSP招标系统JSP投标系统
  18. ubuntu环境下U盘的分区
  19. 在西门子S7-200中一步步做库文件
  20. 有哪些项目使用jeecgboot做的_我复试完了:网络复试现场实录!还要做ppt?

热门文章

  1. HTML渐变背景不重复,在身体上设置的CSS3渐变背景不会拉伸,而是重复?
  2. CSS3——渐变(线性渐变、径向渐变、重复性渐变)
  3. python输入个人所得税计算_Python实现的个人所得税计算器
  4. ecshop与shopex哪个更好?
  5. 【czy系列赛】czy的后宫4 bzoj1925 [Sdoi2010]地精部落
  6. js压缩图片到指定大小
  7. 解决frp内网穿透vsftpd报227错误
  8. {@link}注解的使用 -------代码注释
  9. Z820安装Win7系统出现0X0000007B蓝屏报错无限重启的解决方法与相关问题
  10. 又一琼,又一琼......