石_力 2020-06-19 10:04 采纳率: 0%
浏览 1124

PTA内存超限 求大家指导一下

import java.util.Scanner;

public class Main {
    public static String change(int n){
        String binary = "";
        if(n < 0)
            throw new IllegalArgumentException();       
        if(n==0) {

        }           
        if(n <= 1){
            binary = binary + String.valueOf(n);
            return binary;
        }
        else{
            binary = change(n/2);
            binary = binary + String.valueOf(n % 2);
        }
        return binary;
    }   
    public static int output(String str) {
        String[] temp=new String[2];
        temp=str.split(" ");
        int num1;
        int num2;
        num1=Integer.parseInt(temp[0]);
        num2=Integer.parseInt(temp[1]);
        int difference=num2-num1+1;
        int[] nums=new int[difference];
        for(int i=0;i<difference;i++) {
            nums[i]=num1++;
        }
        String[] nums2=new String[difference];
        for(int i=0;i<difference;i++) {
            nums2[i]=change(nums[i]);
            nums[i]=0;//
        }

        int length=nums2[difference-1].length();

        for(int i=0;i<difference;i++) {
            if(nums2[i].length()!=length) {
                nums2[i]=flushLeft(length,nums2[i]);

            }
        }

        int sum=0;
        for(int i=0;i<difference-1;i++) {
            String temp1=nums2[i];
            String temp2=nums2[i+1];
            for(int p=0;p<length;p++) {
                if(temp1.charAt(p)!=temp2.charAt(p)) {
                    sum++;
                }   
            }
            nums2[i]=null;//
        }
        return sum;
    }

     public static String flushLeft(long length, String content){             
           String str = "";     
           long cl = 0;    
           String cs = "";     
           if (content.length() > length){     
                str = content;     
           }else{    
                for (int i = 0; i < length - content.length(); i++){     
                    cs = cs+"0"  ;     
                }  
              }  
            str =  cs+content ;      
            return str;      
       } 

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int input = scan.nextInt();  //输入用例数量
        scan.nextLine();
        int num[]=new int[input];
        for(int i=0;i<input;i++) {
            String str=scan.nextLine();
            num[i]=output(str);
        }
        for(int i=0;i<input;i++) {
            System.out.println(num[i]);
        }
    }
}
  • 写回答

2条回答 默认 最新

  • dabocaiqq 2020-08-24 16:32
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 带防重放token(Antireplay-Token)的网站怎么用Python发送请求
  • ¥15 visa版本没问题,串口调试助手调试串口正常使用,但是labview刷新不出来
  • ¥15 java MQTT SSL证书
  • ¥20 求一个手机号或者Wxid转微信号的工具
  • ¥20 msconfig开启安全引导后重启电脑黑屏
  • ¥15 对email表单做了一般邮箱正则校验,现在需要额外输入为hotmail或outlook、gmail时做特定邮箱校验,不符合提示出来。并且保证不影响其他正确的邮箱格式通过校验,通过不会提示。
  • ¥20 Win11,bitblocker密钥恢复失败
  • ¥15 stm32 cubemx配置sdram,初始化后无法读写sdram
  • ¥100 上位机到dtu再到485继电器模块 目前结束命令有百分之2左右概率执行失败求指导
  • ¥15 ifcopenshell库在vs2019下的配置