我和12楼的求法是一样的,写是很好写,不过调试的时候花了比较久。 public static void numN(int n){ int length = 1; int[] count = new int[15]; count[0] = 1; count[1] = 3; while(n>count[length]){ n-=count[length]; length++; count[length] = count[length-1]*3; } int[] num = new int[]{2,3,5}; //这个地方不用ans存,直接输出也行 int[] ans = new int[15]; int index=0; while(length>0){ for(int i=2;i>=1;i--){ if(i*count[length-1]<n){ ans[index]=num[i]; n-=i*count[length-1]; break; } ans[index]=2; } index++; length--; } for(int i:ans){ if(i==0){ break; } System.out.print(i); } System.out.println(); }
点赞 评论

相关推荐

牛客网
牛客企业服务