online judge start

    xiaoxiao2022-05-19  82

    计算数字根

    问题

    概述输入输出样例输入样例输出

    求解

    分析设计编码结论

    问题 传送门:数字根

    概述 通过对整数的数字求和来找到正整数的数字根。如果结果值是单个数字,则该数字是数字根。如果结果值包含两个或更多个数字,则将这些数字相加并重复该过程。只要需要获得一位数,就会继续这样做。

    输入 输入文件将包含一个正整数列表,每行一个。输入的结尾将由整数值零表示。

    输出 对于输入中的每个整数,在输出的单独行上输出其数字根。

    样例输入 24 39 0

    样例输出 6 3

    求解

    分析 循环加递归的方法,还要将2位及2位以上的数按位拆分

    设计 循环调用递归函数,这里拆分数位没有用循环除法来做,而是借用了字符串的方法,先将数转化成字符串,然后再逐个取字符转换成单个数字来做处理。

    编码

    import java.util.Scanner; public class the_01 { public static void main(String[] args) { //计算数字根,对于未知个数,可以使用链表来做的,这里先用数组代替 Scanner sc=new Scanner(System.in); int[] num=new int[100]; int pos=0; while(true) { num[pos]=sc.nextInt(); if(num[pos]==0) break; pos++; } int i=0; while(num[i]!=0) { root(num[i]); i++; } } public static void root(int num) { if(num>0&&num<10) System.out.println(num); if(num>=10) { int n=0; String shu=String.valueOf(num); for(int i=0;i<shu.length();i++) n+=Integer.parseInt(""+shu.charAt(i)); if(n>=10) root(n); else System.out.println(n); } } }

    结论 简单题偷懒做,做题方法不唯一。


    最新回复(0)