zoukankan      html  css  js  c++  java
  • 专项复习1 高精度

    高精度

    1 高精度加法 LGP1601

    啥也不说,直接上代码

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    char ans1[505],ans2[505];
    int num1[505],num2[505],numans[510];
    int len1,len2,lent;
    int main(){
    	scanf("%s
    %s",ans1+1,ans2+1);
    	len1=strlen(ans1+1);
    	len2=strlen(ans2+1);
    	for(int i=1,j=len1;i<=len1;i++,j--){
    		num1[i]=ans1[j]-'0';
    	}
    	for(int i=1,j=len2;i<=len2;i++,j--){
    		num2[i]=ans2[j]-'0';
    	}
    	lent=max(len1,len2)+1;
    	for(int i=1;i<=lent;i++){
    		numans[i]=num1[i]+num2[i];
    	}
    	for(int i=1;i<=lent;i++){
    		if(numans[i]>=10){
    			numans[i+1]+=(numans[i]/10);
    			numans[i]%=10;
    		}
    	}
    	while(numans[lent]==0&&lent>1) lent--;
    	for(int i=lent;i>=1;i--){
    		printf("%d",numans[i]);
    	}
    	return 0;
    }
    

    2 数楼梯 LGP1255

    题解

    斐波那契数列+高精度,基本上没什么改动

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath> 
    using namespace std;
    int a[5001][1202];
    int n;
    //bool pd; 
    int pd;
    int main(){
    	a[0][1]=0;
    	a[1][1]=1;
    	a[2][1]=2;
    	scanf("%d",&n);
    	for(int i=3;i<=n;i++){
    		for(int j=1;j<1200;j++){
    			a[i][j]=a[i-1][j]+a[i-2][j];
    		}
    		for(int j=1;j<1200;j++){
    			while(a[i][j]>9){
    				a[i][j+1]++;
    				a[i][j]-=10;
    			}
    		}
    	}
    	for(int i=1200;i>1;i--){
    		if(!pd&&a[n][i]==0) continue;
    		pd=1;
    		printf("%d",a[n][i]);
    	}
    	printf("%d",a[n][1]);
    	return 0;
    }
    

    3 (B)进制星球 LGP1604

    题解

    其实就是一个万能的高精度,(B)进制就是逢(B)进1,以前的(mod 10)、÷10都变成(mod B),剩下的和高精度相同,注意字母和数字的转换(我用了两个函数)

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int mod;
    char ans1[2020],ans2[2020];
    int num1[2020],num2[2020],numans[4050];
    int len1,len2,lent;
    int che(char s){
    	if(s>='0'&&s<='9') return (s-'0');
    	return (s-'A'+10);
    }
    char ret(int s){
    	if(s>=0&&s<=9) return (s+'0');
    	return('A'+s-10);
    }
    int main(){
    	scanf("%d",&mod);
    	scanf("%s
    %s",ans1+1,ans2+1);
    	len1=strlen(ans1+1);
    	len2=strlen(ans2+1);
    	for(int i=1,j=len1;i<=len1;i++,j--){
    		num1[i]=che(ans1[j]);
    	}
    	for(int i=1,j=len2;i<=len2;i++,j--){
    		num2[i]=che(ans2[j]);
    	}
    	lent=max(len1,len2)+1;
    	for(int i=1;i<=lent;i++){
    		numans[i]=num1[i]+num2[i];
    	}
    	for(int i=1;i<=lent;i++){
    		if(numans[i]>=mod){
    			numans[i+1]+=(numans[i]/mod);
    			numans[i]%=mod;
    		}
    	}
    	while(numans[lent]==0&&lent>1) lent--;
    	for(int i=lent;i>=1;i--){
    		printf("%c",ret(numans[i]));
    	}
    	return 0;
    }
    
    要做就做南波万
  • 相关阅读:
    iOS-Foundation框架—结构体(转载)
    Spring-boot-admin功能说明
    http状态响应码对照表
    spring cloud config 详解
    bat 常用命令
    kafka 安装
    Zookeeper 安装和配置
    使用事件和消息队列实现分布式事务(转)
    消息总线
    分布式配置中心高可用
  • 原文地址:https://www.cnblogs.com/liuziwen0224/p/fuxi1.html
Copyright © 2011-2022 走看看