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];
    void ans(int k)
    {
    	k=2;
    	int i;
    	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;
    	}
    	
    	
    	
    }
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	a[0]=2;
    	int i;
    	int k = 2;
    	for(i=1;i<n;i++){
    		ans(k);
    	}
    	int p;
    	for(i=10005;i>=0;i--){
    		if(a[i]!=0){
    			p=i;
    			break;
    		}
    	}
    	for(i=p;i>=0;i--){
    		printf("%d",a[i]);
    	}
    	
    	
    	
    	return 0;
    }
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    /*
      计算2个二进制的数0或者1(字符)进行and or xor运算的结果 
    */
    char calc(char a,char b,string x){
    	char r;
    	if(x == "and"){
    		if(a == '1' && b == '1'){
    			r = '1';
    		}else{
    			r = '0';
    		}
    	} else if(x == "or"){
    		if(a == '1' || b == '1'){
    			r = '1';
    		}else{
    			r = '0';
    		}
    	}else if(x == "xor"){
    		if(a != b){
    			r = '1';
    		}else{
    			r = '0';
    		}
    	}
    	
    	
    	return r;
    	
    }
    
    int main(){
    	//定义完函数,调试一下,做一步测一步 
    	//cout<<calc('1','0',"xor");
    	
    	//开始编写程序
    	string s1,s2,r,x;//s1 s2代表2个要运算的数,r代表结果,x代表运算符
    	int len,i,j;
    	getline(cin,s1); 
    	getline(cin,s2);
    	getline(cin,x);
    	//得到较长的字符串的长度,按照这个长度运算,短的要在前面补0(相当于倒过来后面补0) 
    	len = s1.length() > s2.length()?s1.length():s2.length();
    	
    	if(s1.length() < len){
    		for(i = 1;i <= len - s1.length();i++){
    			s1 = '0' + s1;
    		}
    	} else if(s2.length() < len){
    		for(i = 1;i <= len - s2.length();i++){
    			s2 = '0' + s2;
    		}
    	}
    	
    	//测试一下补0是否正确
    	//cout<<s1<<" "<<s2<<endl; 
    	
    	//逐位运算
    	for(i = 0;i < len;i++){
    		r = r + calc(s1[i],s2[i],x);
    	} 
    	
    	//结果从第一个非0开始输出(这里删除r中前面的0,注意如果r都为0,会删光的,考虑特殊情况) 
    	while(r[0] == '0'){
    		r.erase(0,1);
    	}
    	
    	if(r.length() != 0){
    		cout<<r<<endl;
    	}else{
    		cout<<"0"<<endl;
    	}
    }
    

    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>();
    		s1.add(2);
    		for(int i=1;i<n;i++){
    			for(int j=0;j<s1.size();j++){
    				int tmp=s1.get(j);
    				s1.set(j, tmp*2);
    			}
    			for(int k=0;k<s1.size()-1;k++){
    				int tmp=s1.get(k);
    				if(tmp>=10){
    					int tmp2=s1.get(k+1);
    					s1.set(k, tmp%10);
    					s1.set(k+1, tmp2+1);
    				}
    			}
    			int tmp=s1.get(s1.size()-1);
    			if(tmp>=10){
    				s1.set(s1.size()-1, tmp%10);
    				s1.add(1);
    			}
    		}
    		for(int i=s1.size()-1;i>=0;i--){
    			System.out.print(s1.get(i));
    		}
    	}
    }
    
    

    Python :

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

    信息

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