c++大数据乘法和除法
来源:互联网 发布:深圳网络推手公司收费 编辑:程序博客网 时间:2024/05/21 10:16
一直想不到怎么处理分位乘完每个位置上的数的位数怎么处理,突然想起来刚做的数学题里面有个log求位数的方法,就自己尝试优化了一下以前的代码
虽然还是有些冗长,但是处理起来不需要讨论位数的情况,除法的实现也进行了优化,主函数只进行了对大数阶乘然后除回来的测试,需要更大的数据可
以开更大的数组,但超时的概率就会大大增加,代码如下:
#include<iostream>
#include<cmath>
#include<string.h>
using namespace std;
int a[3001];
void chengfa(int n){
for (int i=3000;i>=1;i--){
a[i]*=n;
}
for (int i=3000;i>=1;i--)
if (a[i]>=10){
int x=log10(a[i]);
int y=1;
for (int j=1;j<=x;j++)y*=10;
while (x){
a[i-x]+=a[i]/y;
a[i]=a[i]%y;
x-=1;
y/=10;
}
}
}
void chufa(int n){
for (int i=1;i<=3000;i++){
a[i+1]+=(a[i]%n)*10;
a[i]/=n;
}
}
int main(){
int n,i;
while (cin>>n){
memset(a,0,sizeof(a));
a[3000]=1;
for (i=1;i<=n;i++){
chengfa(i);
}
for (i=1;i<=3000;i++)
if (a[i])break;
for (;i<=3000;i++)cout<<a[i];
cout<<endl;
for (i=1;i<=n;i++){
chufa(i);
}
for (i=1;i<=3000;i++)
if (a[i])break;
for (;i<=3000;i++)cout<<a[i];
cout<<endl;
}
}
- c++大数据乘法和除法
- 大整数乘法和除法
- C++---大数据乘法
- c语言 大数据乘法
- 慎用乘法和除法
- 高精度乘法和除法
- C语言实现大数据除法
- C语言实现大数据除法
- java实现大整形加法、减法(还没有乘法和除法,目测除法会很难,乘法还凑合)
- C语言实现大整型数据乘法
- 多项式的乘法和除法
- 大数据的乘法和加法
- 大数据乘法
- 大数据乘法算法
- 乘法和除法的汇编形式
- java中的除法和乘法的若干问题
- 大数乘法和大数除法模板
- 除法和乘法的移位处理
- Java内存模型-防止内存泄漏
- SpringMVC 自定义类型转换器
- vue新建项目(二)安装element-ui
- Android--网易有道词典案例源码
- 关于索引的降序排列
- c++大数据乘法和除法
- C++学习笔记8:类和动态内存分配
- Sublime Text 3 OS X命令行
- selenium(4)-打印、设置等待时间
- 通过Atlas实现MySQL读写分离
- (122)关键帧和曲线
- MyBatis 报Lock 锁异常
- 欢迎使用CSDN-markdown编辑器
- java 泛型接口 泛型方法