| 查看: 1612 | 回复: 18 | |||
| 本帖产生 2 个 程序强帖 ,点击这里进行查看 | |||
[交流]
【求助】那位达人给我个大数相乘的算法吧 谢谢了
|
|||
| 看了一个大数相乘的算法,运行了一下,但是不对,想看看高手的代码,先谢啦 |
» 猜你喜欢
同年申请2项不同项目,第1个项目里不写第2个项目的信息,可以吗
已经有6人回复
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有6人回复
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有10人回复
天津大学招2026.09的博士生,欢迎大家推荐交流(博导是本人)
已经有9人回复
有院领导为了换新车,用横向课题经费买了俩车
已经有10人回复
遇见不省心的家人很难过
已经有24人回复
AI 太可怕了,写基金时,提出想法,直接生成的文字比自己想得深远,还有科学性
已经有6人回复
酰胺脱乙酰基
已经有13人回复
有时候真觉得大城市人没有县城人甚至个体户幸福
已经有10人回复
» 本主题相关价值贴推荐,对您同样有帮助:
Pt/C催化剂活性不够,求催化达人解疑
已经有6人回复
金币请教达人一求方差的问题,十分着急,要考试了!
已经有16人回复
请教有经验的有机达人——过柱分离问题
已经有10人回复
请教数学达人关于残差的问题
已经有3人回复
求助环保达人,固体废弃物重金属浸出到底用什么方法?
已经有8人回复
求达人翻译一段德语,有机合成方面的,急~~~
已经有1人回复
请达人帮忙看一下,编辑如下的拒稿理由能否debate一下
已经有6人回复
【讨论】请教达人:混合表面活性剂的浓溶液为什么很容易会结皮?
已经有7人回复
【求助】关于数据拟合,请教数学达人
已经有4人回复
【English】英语口语和听力如何去学习,求达人给个意见?
已经有10人回复
【求助】向各位前辈达人请教户口问题
已经有10人回复
» 抢金币啦!回帖就可以得到:
中国石油大学(华东)吴传德教授团队(国家杰青)2026硕、博招生
+2/222
中国石油大学(华东)吴传德教授团队(国家杰青)2026硕、博招生
+2/204
坐标浙江宁波,诚征女友
+1/62
山东征女友,坐标济南
+1/61
同济大学脑机智能团队脑机接口方向招生招聘
+1/33
上海交通大学大气环境科学课题组招收2026年入学博士生
+1/30
西安交通大学前沿院/机械学院招收2026级硕博研究生!
+1/29
西交利物浦大学招收26年【全奖】博士生1名(空间智能沉浸式手术导航)
+1/26
香港中文大学(深圳)陈筱萌 课题组招生公告(博士 / 博后 / 硕士 / RA)
+1/17
新加坡 南洋理工大学- 智能光子/ 传感 PHD 全奖一名 2026 - 8 月入学
+1/11
意大利华人老师University of Padova-全额奖学金博士
+1/9
南京医科大学国家级高层次青年人才团队招收博士研究生
+1/8
香港中文大学(深圳)陈筱萌 课题组招生公告(博士 / 博后 / 硕士 / RA)
+1/7
考博求助
+1/3
上海理工顾敏院士/李蔚团队招收2026级博士研究生 (集成光学、量子信息方向)
+1/3
双一流天津工业大学电信学院李鸿强教授招收2026年申请审核制博士3人
+1/3
【经验分享】CRISPR基因敲除细胞系构建全流程踩坑指南——从递送方式选择到克隆筛选
+1/2
哈工大(深圳)物理招收2026年9月入学博士生1个名额
+1/1
澳科大招收2026年秋季入学生物材料方向全奖博士研究生(3月5日截止)
+1/1
美国密苏里大学“柔性电子”课题组诚聘博士研究生和博士后
+1/1
3楼2011-04-02 17:02:13
8楼2011-04-02 21:05:56
|
#include #include using namespace std; int *multi(int *num1,int size1,int *num2,int size2) {//返回位数为size1+size2 int size=size1+size2; int *ret=new int [size]; int i=0; memset(ret,0,sizeof(int)*size); for(i=0;i int k=i; for(int j=0;j ret[k++]+=num2*num1[j]; } } for(i=0;i if(ret>=10) { ret[i+1]+=ret/10; ret=ret%10; } } return ret; } int main() { /*int m,n,num1[100],num2[100]; cout<<"输入第一个数的位数"< cout<<"输入第一个数"< cin>>num1; } cout<<"输入第二个数位数"< cout<<"输入第二个数"< cin>>num2; } */ int num1[]={3,2}; int num2[]={1,1}; int *ret=multi(num1,2 ,num2,2 ); for(int i=3 ;i>=0;i--) { cout< } delete [] ret;//内存释放 cin.get(); return 0; } 这是那个代码 去上课了 现在才回复 不好意思啊 我试了那两个 是反着的 而且也不太懂 想看看高手的易读些的代码 谢谢 |
9楼2011-04-02 21:16:03
|
#include #include using namespace std; int *multi(int *num1,int size1,int *num2,int size2) {//返回位数为size1+size2 int size=size1+size2; int *ret=new int [size]; int i=0; memset(ret,0,sizeof(int)*size); for(i=0;i int k=i; for(int j=0;j ret[k++]+=num2*num1[j]; } } for(i=0;i if(ret>=10) { ret[i+1]+=ret/10; ret=ret%10; } } return ret; } int main() { /*int m,n,num1[100],num2[100]; cout<<"输入第一个数的位数"< cout<<"输入第一个数"< cin>>num1; } cout<<"输入第二个数位数"< cout<<"输入第二个数"< cin>>num2; } */ int num1[]={3,2}; int num2[]={1,1}; int *ret=multi(num1,2 ,num2,2 ); for(int i=3 ;i>=0;i--) { cout< delete [] ret;//内存释放 cin.get(); return 0; } 这是那个代码 去上课了 现在才回复 不好意思啊 我试了那两个 是反着的 而且也不太懂 想看看高手的易读些的代码 谢谢 |
10楼2011-04-02 21:16:59
|
#include #include using namespace std; int *multi(int *num1,int size1,int *num2,int size2) {//返回位数为size1+size2 int size=size1+size2; int *ret=new int [size]; int i=0; memset(ret,0,sizeof(int)*size); for(i=0;i int k=i; for(int j=0;j ret[k++]+=num2*num1[j]; } } for(i=0;i if(ret>=10) { ret[i+1]+=ret/10; ret=ret%10; } } return ret; } int main() { /*int m,n,num1[100],num2[100]; cout<<"输入第一个数的位数"< cout<<"输入第一个数"< cin>>num1; } cout<<"输入第二个数位数"< cout<<"输入第二个数"< cin>>num2; } */ int num1[]={3,2}; int num2[]={1,1}; int *ret=multi(num1,2 ,num2,2 ); for(int i=3 ;i>=0;i--) { cout< delete [] ret;//内存释放 cin.get(); return 0; } 这是那个代码 去上课了 现在才回复 不好意思啊 我试了那两个 是反着的 而且也不太懂 想看看高手的易读些的代码 谢谢 |
11楼2011-04-02 21:17:16
|
#include #include using namespace std; int *multi(int *num1,int size1,int *num2,int size2) {//返回位数为size1+size2 int size=size1+size2; int *ret=new int [size]; int i=0; memset(ret,0,sizeof(int)*size); for(i=0;i int k=i; for(int j=0;j ret[k++]+=num2*num1[j]; } } for(i=0;i if(ret>=10) { ret[i+1]+=ret/10; ret=ret%10; } } return ret; } int main() { /*int m,n,num1[100],num2[100]; cout<<"输入第一个数的位数"< cout<<"输入第一个数"< cin>>num1; } cout<<"输入第二个数位数"< cout<<"输入第二个数"< cin>>num2; } */ int num1[]={3,2}; int num2[]={1,1}; int *ret=multi(num1,2 ,num2,2 ); for(int i=3 ;i>=0;i--) { cout< delete [] ret;//内存释放 cin.get(); return 0; } 这是那个代码 去上课了 现在才回复 不好意思啊 我试了那两个 是反着的 而且也不太懂 想看看高手的易读些的代码 谢谢 |
12楼2011-04-02 21:18:16
14楼2011-04-03 10:57:30
★ ★ ★ ★
青涩草(金币+1):谢谢参与
余泽成(金币+3, 程序强帖+1): 谢谢参与应助! 2011-05-13 21:23:05
青涩草(金币+1):谢谢参与
余泽成(金币+3, 程序强帖+1): 谢谢参与应助! 2011-05-13 21:23:05
|
#include #define N 10000 void main() { int a[N],n,k,i,j,m,flag=1;//flag代表位数 printf("请输入一个100以内的正数" ;scanf("%d",&n); for(i=1;i<=N;i++) a=0;//这个循环使得数组里的每一个元素初值都为0 a[1]=1;//为了便于累乘运算,特殊的将a[1]赋值为1 for(k=1;k<=n;k++)//大循环用于计算小于n的所有的数 { flag=1; for(i=1;i<=k;i++) { for(j=1;j<=flag;j++) a[j]*=i; for(j=1;j<=flag;j++) { if(a[j]>9)//从低位到高位判断是否大于9,如果大于,则进位 { for(m=1;m<=flag;m++) { if(a[flag]>9) flag++;//控制所求得的数的阶乘的位数 a[m+1]+=a[m]/10; a[m]=a[m]%10;//将数字分离到每一个数组元素里 } } } } printf("%d的阶乘的全部有效数字为",k); for(;flag>=1;flag--) printf("%d",a[flag]);//从高位往低位依次输出 printf("\n\n" ;for(i=1;i<=N;i++) a=0; a[1]=1;//每次运行以上步骤时都会改变数组a中的值,须再次赋值 } } |
16楼2011-05-12 20:36:13
17楼2011-05-12 21:34:38
18楼2011-05-13 08:36:52
19楼2011-05-13 09:00:53
简单回复
小飞—动力2楼
2011-04-02 17:00
回复
青涩草(金币+1):谢谢参与
2011-04-02 17:19
回复
青涩草(金币+1):谢谢参与
daijiash5楼
2011-04-02 20:36
回复
青涩草(金币+1):谢谢参与
太阳谷6楼
2011-04-02 20:37
回复
青涩草(金币+1):谢谢参与
祝福!
xlli1217楼
2011-04-02 20:51
回复
青涩草(金币+1):谢谢参与
lipearpear13楼
2011-04-02 21:24
回复
青涩草(金币+1):谢谢参与
tangyanxmc15楼
2011-04-03 11:14
回复
青涩草(金币+1):谢谢参与

祝福













回复此楼
;
这当然是可能的啦