1 条题解

  • 0
    @ 2025-10-10 15:45:58

    C :

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    #include<math.h>
    int a[10005],s[10005];
    //每次都计算 a数组*k 
    void ans(int k){ //123
    	int i;
    	//每一位都乘以k 
    	for(i=0;i<10000;i++){
    		a[i] = a[i]*k;
    	}
    	for(i=0;i<10000;i++){
    		a[i+1] = a[i+1] + a[i]/10;
    		a[i] = a[i]%10;
    	}
    }
    void add(){
    	int i;
    	for(i=0;i<10000;i++){
    		s[i] = s[i]+a[i];
    		s[i+1] = s[i+1] + s[i]/10;
    		s[i] = s[i]%10; 
    	}
    }
    int main(){
    	int n,i,j;
    	scanf("%d",&n);
    
    	for(i=1;i<=n;i++){
    		memset(a,0,sizeof(a)); 
    		a[0] = 1; 
    		for(j=1;j<=i;j++){
    			ans(2);
    		}
    		add();
    	}
    
    	int p=1000;
    	for(i=p;i>=0;i--){
    		if(s[i]!=0){
    			p = i;
    			break;
    		}
    	}
    	for(i=p;i>=0;i--){
    		printf("%d",s[i]);
    	}
    	return 0;
    }
    
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(){
    	int a[100][100] = {0};
    	int r[100] = {0};
    	int i,j,n;
    	cin>>n;
    	a[0][0] = 1;
    	int k = 1;
    	for(i = 1;i <= n;i++){
    		for(j = 0;j < k;j++){
    			a[i][j] = a[i - 1][j] * 2;
    		}
    		
    		for(j = 0;j < k;j++){
    			if(a[i][j] >= 10){
    				a[i][j + 1] = a[i][j + 1] + a[i][j] / 10;
    				a[i][j] = a[i][j] % 10; 
    			}
    		}
    		
    		if(a[i][k] > 0){
    			k++;
    		}
    	}
    	
    	//求和
    	for(i = 1;i <= n;i++){
    		for(j = 0;j < k;j++){
    			r[j] = r[j] + a[i][j];
    			
    			if(r[j] >= 10){
    				r[j + 1] += r[j] / 10;
    				r[j] = r[j] % 10;
    			}
    		}
    		
    		if(r[k] > 0){
    			k++;
    		}
    	}
    	
    	int p = 0;
    	for(i = k - 1;i >= 0;i--){
    		if(r[i] != 0){
    			p = i;
    			break;
    		}
    	} 
    
    	for(i = p;i >= 0;i--){
    		cout<<r[i];
    	} 
    }
    
    

    Pascal :

    var n,i:longint;
    z,s:qword;
    begin
    read(n);
    s:=1;
    for i:=1 to n do
    begin
    s:=s*2;
    z:=z+s;
    end;
    write(z);
    end.
    

    Java :

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		int n=sc.nextInt();
    		List<Integer> s1=new ArrayList<Integer>();
    		List<Integer> s2=new ArrayList<Integer>();
    		s1.add(2);
    		s2.add(2);
    		for(int i=1;i<n;i++){
    			for(int j=0;j<s2.size();j++){
    				int tmp=s2.get(j);
    				s2.set(j, tmp*2);
    			}
    			for(int k=0;k<s2.size()-1;k++){
    				int tmp=s2.get(k);
    				if(tmp>=10){
    					int tmp2=s2.get(k+1);
    					s2.set(k, tmp%10);
    					s2.set(k+1, tmp2+1);
    				}
    			}
    			int tmp=s2.get(s2.size()-1);
    			if(tmp>=10){
    				s2.set(s2.size()-1, tmp%10);
    				s2.add(1);
    			}
    			s1=plus(s1, s2);
    		}
    		for(int i=s1.size()-1;i>=0;i--){
    			System.out.print(s1.get(i));
    		}
    	}
    	
    	public static List<Integer> plus(List<Integer> s1,List<Integer> s2){
    		List<Integer> s3=new ArrayList<Integer>();
    		for(int i=0;i<s2.size();i++){
    			s3.add(s2.get(i));
    		}
    		for(int i=0;i<s1.size();i++){
    			s3.set(i, s1.get(i)+s3.get(i));
    		}
    		for(int i=0;i<s3.size()-1;i++){
    			int n1=s3.get(i);
    			int n2=s3.get(i+1);
    			if(n1>=10){
    				s3.set(i, n1-10);
    				s3.set(i+1, n2+1);
    			}
    		}
    		if(s3.get(s3.size()-1)>=10){
    			s3.set(s3.size()-1, s3.get(s3.size()-1)-10);
    			s3.add(1);
    		}
    		return s3;
    	}
    }
    
    

    Python :

    print(2**int(input())*2-2)
    
    • 1

    信息

    ID
    262
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者