2 条题解

  • 0
    @ 2025-10-3 20:44:01
    
    #include<iostream>
    using namespace std;
    
    int tran(int x, int s) {
    	int sum = 0;
    	while (x>0) {
    		sum += x % s;
    		x /= s;
    	}
    	return sum;
    }
    
    bool fun(int i) {
    	return tran(i, 4) == tran(i, 8);
    }
    
    int main() {
    	int l, r;
    	cin >> l >> r;
    
    	int count = 0;
    	for (int i = l; i <= r; ++i) {
    		if (fun(i)) {
    			count += 1;
    		}
    	}
    	cout << count << endl;
    	return 0;
    }
    
    • 0
      @ 2025-5-8 22:12:30

      JAVA AC代码: 这里先给出进制转换的模板:

      import java.util.*;
      //穿越时空之门 
      public class 进制转化 {
      	static int ans;
      	
      	public static int ChangeTen(String s,int k) {
      		int ans=0;
      		for(int i=0;i<s.length();i++) {
      			ans=ans*k+calc(s.charAt(i));
      		}
      		return ans;
      	}
      	
      	private static int calc(char c) {
      		if(c>='A') {
      			return c-'A'+10;
      		}else {
      			return c-'0';	
      			}
      		}
      	
      	public static String ChangeK(int n,int k) {
      		StringBuilder ans=new StringBuilder("");
      		while(n!=0) {
      			int x=n%k;
      			if(x<10) {
      				ans.append((char)('0'+x));
      			}else {
      				ans.append((char)('A'+x-10));
      			}
      			n/=k;
      		}
      		return ans.reverse().toString();
      	}
      	
      	public static void main(String[] args) {
      		//System.out.println(ChangeK(15,16));
      		for(int i=1;i<=2024;i++) {
      			String s1=ChangeK(i,2);
      			String s2=ChangeK(i,4);
      			int sum1=0,sum2=0;
      			for(int j=0;j<s1.length();j++) {
      				sum1+=calc(s1.charAt(j));
      			}
      			for(int j=0;j<s2.length();j++) {
      				sum2+=calc(s2.charAt(j));
      			}
      			if(sum1==sum2) ans++;
      		}
      		System.out.println(ans);
      		}
      }
      
      

      题解:

      import java.util.*;
      import java.util.StringTokenizer;
      import java.io.*;
      
      public class Main {
      
      	public static void main(String[] args) {
      		int l=in.nextInt();int r=in.nextInt();
      		int ans=0;
      		for(int i=l;i<=r;i++){
      			String s1=changeK(i,4);//转成4进制
      			String s2=changeK(i,8);//转成8进制
      			int num1=0,num2=0;
      			for(int j=0;j<s1.length();j++){
      				num1+=s1.charAt(j)-'0';//每一位相加
      			}
      			for(int j=0;j<s2.length();j++){
      				num2+=s2.charAt(j)-'0';//每一位相加
      			}
      			if(num1==num2) ans++;//两数相等,答案++
      		}
      		out.println(ans);
      		out.close();
      	}
      	
      	public static String changeK(int n,int k){
      		StringBuilder ans=new StringBuilder();
      		while(n>0){
      			int x=n%k;
      			ans.append((char)('0'+x));
      			n/=k;
      		}
      		return ans.reverse().toString();
      	}
      	
      
      	static FastReader in=new FastReader();
      	static PrintWriter out=new PrintWriter(System.out);
      	static class FastReader{
      		static BufferedReader br;
      		static StringTokenizer st;
      		FastReader(){
      			br=new BufferedReader(new InputStreamReader(System.in));
      		}
      		String next() {
      			String str="";
      			while(st==null||!st.hasMoreElements()) {
      				try {
      					str=br.readLine();
      				}catch(IOException e) {
      					throw new RuntimeException(e);
      				}
      				st=new StringTokenizer(str);
      			}
      			return st.nextToken();
      		}
      		int nextInt() {
      			return Integer.parseInt(next());
      		}
      		double nextDouble() {
      			return Double.parseDouble(next());
      		}
      		long nextLong() {
      			return Long.parseLong(next());
      		}
      	}
      	
      }
      
      
      • 1

      信息

      ID
      12
      时间
      1000ms
      内存
      256MiB
      难度
      2
      标签
      递交数
      60
      已通过
      39
      上传者