还有两点没有理解:
1.当数字很大时会超过INT的表示范围,书中使用记录大整数中1的位置
2.如果某个循环中没有新的余数更新,那么就不存在这样的数M
public class Main { public static void main(String[] args) { int n=99; System.out.println(find(n)); } public static int find(int n){ int[] before=new int[n]; int[] after=new int[n]; int step=1; boolean flag=false; while(!flag){ for(int i=0;i
解法2:跟书本一致
import java.util.*;public class Main{ public static void main(String[] args) { int N=133; String[] s=new String[N]; for(int i=0;i0 && i>(s[k].charAt(s[k].length()-1)-'0') && s[(k+j)%N].length()==0){ s[(k+j)%N]=s[k]+i; flag=true; } } if(flag==false){ noUpdate++; } if(noUpdate==N || s[0].length()>0){ break; } } if(s[0].length()==0){ System.out.println("no answer"); }else{ System.out.println(s[0]); } }}