数的表示--任意进制的转换--大数
2018-03-31 14:11
302 查看
转载:https://blog.csdn.net/jaster_wisdom/article/details/52107785
#include<cstdio> #include<cstring> #include<iostream> using namespace std; string x; int in[1000]; int out[1000]; void tran_arry(){ for(int i=0;i<x.length();i++){ if(isalpha(x[i])) in[i]=x[i]-'A'+10; else in[i]=x[i]-'0'; } } void tran_any(int a,int b){ int sum=1; int d; int k=0; int len=x.length(); while(sum){ sum=0; for(int i=0;i<len;i++){ d=in[i]/b; sum+=d; if(i==len-1) out[k++]=in[i]%b; else in[i+1]+=(in[i]%b)*a; in[i]=d; } } if(k==0) out[k--]=0; if(k==-1) cout<<0<<endl; else { for(int i=0;i<k;i++){ if(out[k-i-1]>9) cout<<(char)(out[k-i-1]+'A'-10); else cout<<out[k-i-1]; } } cout<<endl; } int main(){ int a,b; while(1){ cin>>x; cin>>a>>b; tran_arry(); tran_any(a,b); } return 0; }
大数相加
#include <stdio.h> #include <string.h> #include<iostream> using namespace std; int a1[10001];//7654321 int a2[10001];//2345679 int a3[10001]; char aa1[10001]; int Max; void tan(){ int len; scanf("%s",aa1); Max=len=strlen(aa1); for(int i=len-1;i>=0;i--) a1[len-i-1]=aa1[i]-'0'; scanf("%s",aa1); len=strlen(aa1); Max=max(len,Max); for(int i=len-1;i>=0;i--) a2[len-i-1]=aa1[i]-'0'; } int main() { int i=0; memset(a1,0,sizeof(a1)); memset(a2,0,sizeof(a2)); memset(a3,0,sizeof(a3)); tan(); for(int i=0;i<Max;i++){ int t=(a1[i]+a2[i]+a3[i])%10; //从个位开始计算 a3[i+1]+=((a1[i]+a2[i]+a3[i])/10); a3[i]=t; } if(a3[Max]){ for ( int j=Max; j>=0; j-- ) printf("%d",a3[j]);printf("\n"); } else { for ( int j=Max-1; j>=0; j-- ) printf("%d",a3[j]);printf("\n"); } return 0; }
高精度n!
#include<cstdio> #include<string> #include<stdlib.h> #include <string.h> #include<iostream> using namespace std; const int maxn=10000; int f[maxn]; int main(){ int i,j,n; memset(f,0,sizeof(f)); f[0]=1; cin>>n; for( i=2;i<=n;i++){ int c=0; for( j=0;j<maxn;j++){ int t=f[j]*i+c; f[j]=t%10; c=t/10; } } for(j=maxn-1;j>=0;j--) if(f[j])break; for(i=j;i>=0;i--) printf("%d",f[i]); putchar(10); return 0; }
500
1220136825991110068701238785423046926253574342803192842192413588385845373153881997605496447502203281863013616477148203584163378722078177200480785205159329285477907571939330603772960859086270429174547882424912726344305670173270769461062802310452644218878789465754777149863494367781037644274033827365397471386477878495438489595537537990423241061271326984327745715546309977202781014561081188373709531016356324432987029563896628911658974769572087926928871281780070265174507768410719624390394322536422605234945850129918571501248706961568141625359056693423813008856249246891564126775654481886506593847951775360894005745238940335798476363944905313062323749066445048824665075946735862074637925184200459369692981022263971952597190945217823331756934581508552332820762820023402626907898342451712006207714640979456116127629145951237229913340169552363850942885592018727433795173014586357570828355780158735432768888680120399882384702151467605445407663535984174430480128938313896881639487469658817504506926365338175055478128640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
相关文章推荐
- 任何进制的任何数(没有大小限制)向任何进制的数的转换方法(进制原则可以任意,但是大于十表示不方便)
- 任意进制的大数转换
- 大数的任意进制之间的转换(九度OJ题目1080)
- python基础--实现大数到任意进制的转换
- POJ 1220 (两种任意进制之间的转换(大数),java的BigInteger)
- 十进制数任意转换2-9进制数——栈的应用
- 十六进制以内任意进制之间的转换
- 【C语言】任意进制之间的转换(支持小数部分)
- 十进制数转换成任意进制 (基础题) HLG 1937
- 输入一串数字转换为2,4,6,8,10,16任意进制数字
- USTC机试——十进制转换成任意m进制数字
- C++ 十进制'纯'小数转换为任意进制的小数
- 转换成任意[2, 36]进制的字符串输出
- 第十二周oj项目C任意转换进制
- 任意进制间的转换
- C语言实现任意进制的转换,主要注意代码的小技巧
- 十进制转换成任意进制(模板)
- 用"指定字符组成的任意进制"转换生成不带4的卡号
- 栈的应用——数值转换为任意进制
- Golang如何实现任意进制转换的方法示例