牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。
变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80.
问题是,要做多少次变换,使得这个数变成个位数。
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ String str = scanner.next(); if(str.length()==0 || str==null){ return; } //输入就是一位数字 if(str.length()==1){ System.out.println(0); return; } //循环执行变换直至这个数只剩下一位数字 int count=0; while(true){ count++; int len = str.length(); long sum=1; for(int i=0;i<len;i++){ int t = str.charAt(i)-'0'; if(t==0){ System.out.println(count); return; }else{ sum*=t; } } if(sum<10){ System.out.println(count); return; } str = new String(sum+""); } } } }
public class Test { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个整数:"); int temp=sc.nextInt(); int count=0; while(temp>=10){ ArrayList<Integer> a=new ArrayList<>(); while(temp>0){ a.add(temp%10); temp/=10; } int sum=1; for(int i=0;i<a.size();i++){ sum*=a.get(i); } System.out.println("第"+(count+1)+"次"); System.out.println(sum); temp=sum; count++; } System.out.println("总共执行了"+count+"次"); sc.close(); } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); int count = 0; while(num/10 != 0) { ArrayList<Integer> a = new ArrayList<>(); while(num != 0) { a.add(num%10); num = num / 10; } int m = 1; for(int i=0; i<a.size(); i++) { m *= a.get(i); } num = m; count ++; } System.out.println(count); in.close(); } }