/** * 设计一个算法: 输入一个数:p 系统匹配一个数:q 使得p*q的结果为n个1 条件: 输入的那个数不能为偶数和5 思路: * 本次算法使用逆向思维,先定义一个被除数divided(初始值为1)用于进行试商 * 然后进行判断:divided % p == 0? 如果等于0,则满足条件,该divided的值就是1 * 的个数,q就是系统匹配的那个数,否则就讲divided= divided*10+1(向后补1) * * @author evan_qb * @param p 为输入的那个数 */
public static int getOne(int p) { if (p % 2 == 0 && p % 10 == 5) { System.out.println("该乘积不存在"); return -1; } // 判断是否存在的值 int result = 1; //系统所生成的另一个乘数 int q = 0; // 定义初始值 int divided = 1; //用于统计1的个数 int n = 1; while (result != 0) { //向后补1 divided = divided * 10 + 1; result = divided % p; n++; q = divided / p; } //打印1的个数 System.out.println("乘积p*q为" + n + "个1"); //将生成的另一个乘积返回 return q; }