同往常一样,打开电脑进入深度系统准备做题,题目要求N!的位数,需要调用数学函数log10,如下所示:
#include<stdio.h> #include<math.h> int main(){ int t,n,i; double s; scanf("%d",&t); while(t--) { scanf("%d", &n); s = 1; if (n == 1) printf("1\n"); else { for (i = 2; i <= n; i++) s += log10(i); printf("%d\n", (int)s); } } return 0; }
1、用gcc编译,包含了math.h,却不能引用数学函数log10。不要紧,换个编译器试试看Tiny C Compiler,可惜不能下载。
2、还是用gcc,先尝试自动更新,使用在线安装命令:
sudo apt-get install gcc
直接安装,得知:gcc 已经是最新版 (4:7.2.0-1d1)。gcc 已设置为手动安装。再次编译,仍然产生“对'log10'未定义的引用”。
3、继续尝试在线安装命令:
sudo apt-get install build-essential
继续执行之后,可以用g++了!编译求N!位数的程序,用g++编译成功,但是用gcc还是出错。
4、要不,访问gcc官网,找到日本镜像站点,找到对应的版本:7.2.0,下载不了;再找其他镜像:俄罗斯镜像站点,版本7.2.0,这里选择下载:gcc-7.2.0.tar.gz,有107M,可以下载;或者到清华大学开源软件镜像站,也能下载。
5、本来计划按步骤进行安装:为你详解Linux安装GCC方法,能configure,但是生成不了Makefile。
6、看来,在configure阶段就有问题没解决:参考centos7自定义安装gcc7.2.0,无法定位软件包,只有继续找到所需的软件包。
7、借鉴Linux下编译安装GCC-7.2.0,在configure阶段又出现问题,提示需要先安装一款m4的软件。
8、手动安装m4, autoconf, automake, libtool,同时更新环境变量:
export PATH=/home/administrator/m4-1.4.13/bin:$PATH
再次配置gmp-6.1.2成功!接下来安装gmp-6.1.2、mpfr-3.1.6、mpc-1.0.3成功!
9、配置gcc-7.2.0如下:
./configure --prefix=/home/administrator/gcc-7.2.0 --enable-threads=posix --disable-checking --enable-languages=c,c++ --disable-multilib --with-gmp=/home/administrator/gmp-6.1.2 --with-mpfr=/home/administrator/mpfr-3.1.6 --with-mpc=/home/administrator/mpc-1.0.3
终于生成了Makefile,可以运行make了,等了三个多小时,仍在编...
10、编完后不要忘记:把gcc-7.2.0中的gcc、g++等命令在/usr/bin目录下分别做一个符号连接。以及后续步骤:Linux下编译安装GCC-7.2.0。
0.0分
0 人评分
求阶乘数位长度 方法一: 可设想n!的结果是不大于10的M次幂的数, 即n!<=10^M(10的M次方), 则不小于M的最小整数就是 n!的位数, 对该式两边取对数,有 M =log10^n! 即:M = log10^1+log10^2...+log10^n 循环求和,就能算得M值, 该M是n!的精确位数。 当n比较大的时候,这种方法方法需要花费很多的时间。 方法二: 利用斯特林(Stirling)公式的进行求解。下面是推导得到的公式: res=(long)((log10(sqrt(4.0*acos(0.0)*n))+n*(log10(n)-log10(exp(1.0))))+1); 当n=1的时候,上面的公式不适用, 所以要单独处理n=1的情况! 有关斯特林(Stirling)公式及其相关推导,这里就不进行详细描述,有兴趣的话可看这里。 这种方法速度很快就可以得到结果。详细证明如下: http://episte.math.ntu.edu.tw/articles/mm/mm_17_2_05/index.html 以上内容摘自http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=69优秀代码
解决方法只有一句:gcc -o a.out test.c -lm,其中a.out是编译将生成的可执行文件名,test.c是源码文件,-lm添加名为m的库,m是math的缩写?表示数学函数库?
点我有惊喜!你懂得!浏览:2248 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1055 |
汽水瓶 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:597 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:467 |
wu-理财计划 (C++代码)浏览:907 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:585 |
A+B for Input-Output Practice (V) (C语言代码)浏览:497 |
罗列完美数 (C语言代码)浏览:519 |
核桃的数量 (C语言代码)浏览:893 |