高精度模拟乘法阶乘

news/2024/7/3 6:08:55

方法一:自己写的较繁琐的一种方法

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int maxx=1e5+10;
char s1[maxx],s2[maxx];
int a[maxx],b[maxx];
int c[maxx];
int n;
int main(){while(cin>>n){a[1]=1%10;a[2]=1/10;b[1]=1%10;b[2]=1/10;int m=0;if(n==0){cout<<1<<endl;continue;}for(int i=1;i<=2;i++){for(int j=1;j<=2;j++){c[i+j-1]+=a[i]*b[j];c[i+j]+=c[i+j-1]/10;c[i+j-1]=c[i+j-1]%10;}}int len=n+m;while(c[len]==0&&len>0)len--;memset(a,0,sizeof(a));for(int i=len;i>0;i--){a[i]=c[i];}memset(b,0,sizeof(b));memset(c,0,sizeof(c));for(int i=2;i<=n;i++){m=log10(i)+1;int t=i;int j=0;while(j<m){b[++j]=t%10;t/=10;}for(int k=1;k<=j;k++){for(int z=1;z<=len;z++){c[k+z-1]+=b[k]*a[z];c[k+z]+=c[k+z-1]/10;c[z+k-1]=c[k+z-1]%10;}}len=len+j;while(c[len]==0&&len>0)len--;memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(int k=len;k>0;k--){a[k]=c[k];}memset(c,0,sizeof(c));}	for(int i=len;i>0;i--){cout<<a[i];}cout<<endl;}return 0;
}

方法二:网上学习的技巧:

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int maxx=10005;
const int inf=0x3f3f3f3f;
int a[maxx];
int b[maxx];
int main(){int n;while(cin>>n){memset(a,0,sizeof(a));memset(b,0,sizeof(b));a[1]=1;int len=1;if(n==0){cout<<1<<endl;}else{for(int i=2;i<=n;i++){int v=0;for(int j=1;j<=len;j++){int temp=v+a[j]*i;a[j]=temp%10000;v=temp/10000;}if(v!=0){a[++len]=v;}}cout<<a[len];for(int i=len-1;i>=1;i--){printf("%04d",a[i]); }cout<<endl;}}return 0;
}

http://lihuaxi.xjx100.cn/news/285797.html

相关文章

命令行的艺术 (GitHub 星标 6 万多)

转自&#xff1a;GitHubgithub.com/jlevy/the-art-of-command-line/blob/master/README-zh.md熟练使用命令行是一种常常被忽视&#xff0c;或被认为难以掌握的技能&#xff0c;但实际上&#xff0c;它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时&…

微软小冰:全双工语音对话详解

讲师 | 周力来源 | AI科技大本营在线公开课微软小冰第六代发布会上正式宣布上线全新的共感模型&#xff0c;同时也开始公测一种融合了文本、全双工语音与实时视觉的新感官。这项新技术可以实时预测人类即将说出的内容&#xff0c;实时生成回应&#xff0c;并控制对话节奏&#…

简单介绍六点nginx优化的方法

这篇文章主要介绍了nginx优化的六点方法,有对nginx优化不太熟悉的同学可以参考下 一.优化Nginx并发量 [rootproxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/ Benchmarking 192.168.4.5 (be patient) socket: Too many open files (24) //提示打开文件数量过多 修改Ngin…

给Chrome“捉虫”16000个,Google开源bug自检工具

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在内部开发和使用八年之久&#xff0c;近日&#xff0c;Google 宣布开源 bug 自动化检测工具 ClusterFuzz。ClusterFuzz 是一款提供端到端的自动化模糊测试工具&#xff1a;从错误检测到分类排查&…

Codeforces Round #649 (Div.2)题解

文章目录A - XXXXXB - Most socially-distanced subsequenceC - Ehab and Prefix MEXsA - XXXXX 题意&#xff1a;这个题让你找从开头或者是结尾去掉最少几个数以后总和是不能整除给定的x 思路&#xff1a;如果这个序列总和可以整除给定的x的话&#xff0c;那么我们只要找到一…

知乎13万赞!为何很多名校毕业生,都输在了人生后半程

作 者&#xff1a;skiptomylou图 片&#xff1a;站酷海洛来 源&#xff1a;知乎生活因何而变如果在截止目前的人生里&#xff0c;有什么事情是我认为我领悟到的最重要的&#xff0c;那就是&#xff1a;人的生活就像投资品价值一样&#xff0c;是存在均值回归的。那个均值&#…

远程推送IOS

2019独角兽企业重金招聘Python工程师标准>>> 一,IOS远程通知服务APNs 苹果的APNs(苹果推送通知服务Apple Push Notification server)允许设备和苹果的推送通知服务器保持链接,支持开发者推送消息到给用户设备对应的应用程序。 苹果的APNs基本原理是: 首先由应用注册…

poj2139(Flody算法)

题意&#xff1a;题目给出n,m。n代表母牛的数量&#xff0c;m代表接下来的行数。接下来的m行&#xff0c;首先给出一个x,表示x后面跟的数&#xff0c;也就是母牛的编号&#xff08;这里从1开始&#xff0c;当然从0开始也一样&#xff09;&#xff0c;表示这x头母牛之间存在关系…