C++ 高精度求n的累加和
用高精度方法,求s=1+2+3+.....+n的精度值(n以一般整数输入,n<=10^100)
#include<iostream> #include<cstring> #include<string> using namespace std; int main() { char str1[256],str2[256]; int a[256],b[256],c[256]; int lena,lenb,lenc; int x; int i,j; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); cin>>str1;//输入乘数str1 //cin>>str2;//输入乘数str2 strcpy(str2,str1); lena=strlen(str1); lenb=strlen(str2); for(i=0;i<=lena-1;i++)//乘数str1存入数组a a[lena-i]=str1[i]-'0'; for(i=0;i<=lenb-1;i++)//乘数str2存入数组b b[lenb-i]=str2[i]-'0'; b[1]++; for(int i = 1; i < lenb; i++) { if(b[i]>=10) { b[i] = 0; b[i+1]++; } else { break; } } for(i=1;i<=lenb;i++) { x=0;//用于存放进位 for(j=1;j<=lena;j++)//对乘数每一位进行处理 { c[i+j-1]=a[j]*b[i]+x+c[i+j-1];//当前乘积+上次乘积进位+原数 x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+lena]=x;//进位 } lenc=lena+lenb; for(i=lenc;i>=1;i--) { if(c[i]%2==0) { c[i]/=2; } else { c[i-1]+=10; c[i]/=2; } } while((c[lenc]==0)&&(lenc>1))//删除前导0 lenc--; for(i=lenc;i>=1;i--)//倒序输出 { cout<<c[i]; } cout<<endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)