HDOJ 1042结题报告

当所求的数是很大时,它的阶乘往往 int long 这些数都无法保存,这是我们可以引用数组保存很大数的一位,比如 23 就用数组来表示, a[1]=2,a[0]=3, 这是数组的每一位相乘就和我们当时小学乘法一样,一个数乘以另一个数是,就用这个数的每一位乘以另一个数,再加上前一位的进位,这样就可以保证不会溢出,得到正确的结果。

# include<stdio.h>

# include<string.h>

int main(){

         int a[100001];// 用于存放阶乘结果的数组

         memset(a,0,sizeof(a));

         int n;//n 的阶乘

         int i,j,temp;

         int carry;// 存放每一位相乘后得到的进位

         a[0]=1;// 初始化结果的长度,这一位存放数组的长度

         while(scanf("%d",&n)!=EOF)

         {

                   a[1]=1;// 初始化这个数为 1

                   int digit=1;// 记录数组的长度   刚开始将这两句放到了循环体的外面,导致了错误的结果,因为每经过一个循环之后,这两个数是不确定的,应该将它们重新初始化,哦哦。。。。气死我了居然错这里了

                   // 外层循环用于控制计算 n 的阶乘,从 2 开始到 n ,和数组的每一位相乘

                   for(i=2;i<=n;i++)

                   {

                            for(carry=0,j=1;j<=digit;j++)

                            {

                                     temp=a[j]*i+carry;

                                     a[j]=temp%10;//a[j] 用来存放大于 9 的数的个位,例如这里相乘得到 45 则存放 5

                                     carry=temp/10;// 存放进位, 45 这里就存的是 4

                            }

                            // 当这里 carry 不为 0 时,则说明在原先的最高上又有了进位

                            while(carry)

                            {

                                     a[++digit]=carry%10;

                                     carry=carry/10;// 看还有没有进位了

                            }

 

                   }

                   for(i=digit;i>0;i--)

                   {

                            printf("%d",a[i]);

                   }

         printf(“/n”);// 注意这里的的换行,如果不加这一句,程序不会出现自动换行,则会出现格式错误,直接晕死

         }

         return 0;

}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值