• C++
  • 01413信奥1330-高精度应用

  • @ 2024-4-13 14:17:27

image

#include<bits/stdc++.h>
using namespace std;
int a[110]={1,0};
int main(){
	long long n;
	cin>>n;
	int len=1;
	for(int i=1;i<=n;i++){
		for(int j=len-1;j>=0;j--){
			a[j]*=2;
			if(a[j]>=10){
				a[j+1]++;
				a[j]%=10;
				if(j==len-1)len++;
			}
		}
	}
	for(int j=len-1;j>=0;j--)cout<<a[j];
	return 0;
}

改进求m的n次方

#include<bits/stdc++.h>
using namespace std;
int a[110]={1,0};
int main(){
	long long n,m,tmp=0;
	cin>>m>>n;
	int len=1;
	for(int i=1;i<=n;i++){
		for(int j=len-1;j>=0;j--){
			a[j]=a[j]*m;
			if(a[j]>=10){
				tmp = a[j]/10;
				a[j+1]+= tmp;
				a[j]%=10;
				if(j==len-1){
					len++;
				}
			}
		}
	}
	for(int j=len-1;j>=0;j--)cout<<a[j];
	return 0;
}

image

#include<bits/stdc++.h>
using namespace std;
int a[1100000]={1,0};
int main(){
	long long n,tmp=0;
	cin>>n;
	int len=1;
	for(int i=1;i<=n;i++){
		int tmp =0;
		for(int j=0;j<=len-1;j++){
			
			a[j]=a[j]*i+tmp;
			if(a[j]>=10){
				tmp = a[j]/10;
				a[j] %= 10;
				if(j==len-1) len++;
			}else tmp = 0;
//			cout<<a[j]<<endl;
		}
//		cout<<"****"<<endl;
	}
	for(int j=len-1;j>=0;j--)cout<<a[j];
	return 0;
}

作业:阶乘和

image

#include<bits/stdc++.h>
using namespace std;
int sum[110];
int main(){
	long long n,tmp=0,sum_len=0;
	cin>>n;
	for(int k=1;k<=n;k++){
		int len=1;
		int a[110]={1,0};
		for(int i=1;i<=k;i++){
			int tmp =0;
			for(int j=0;j<=len-1;j++){
				a[j]=a[j]*i+tmp;
				if(a[j]>=10){
					tmp = a[j]/10;
					a[j] %= 10;
					if(j==len-1) len++;
				}else tmp = 0;
			}
		}
		tmp = 0;
		for(int i=0;i<len||i<sum_len;i++){
			sum[i] = sum[i] + a[i]+tmp;
			if(sum[i]>=10){
				tmp=sum[i]/10;
				sum[i]=sum[i]%10;
			}else tmp = 0;
			if(len>=sum_len&&i==len-1){
				if(tmp==1){
					sum_len=len+1;
					sum[sum_len-1]=tmp;
				}else sum_len=len;
			}else if(len<=sum_len&&i==sum_len-1){
				if(tmp==1){
					sum_len=sum_len+1;
					sum[sum_len-1]=tmp;
				}
			}
		}
		
	}
	for(int j=sum_len-1;j>=0;j--)cout<<sum[j];
	return 0;
}

0 条评论

目前还没有评论...