数的表示--任意进制的转换--大数

转载: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



猜你喜欢

转载自blog.csdn.net/kala0/article/details/79734483