光棍数是全部由1组成的数字,比如 1、11、111、1111 等。传说任何一个光棍数都能被一个不以5结尾的奇数整除。比如,111111 就可以被 13 整除。 现在,你的程序要读入一个整数
,这个整数一定是奇数并且不以 5 结尾。然后,经过计算,输出两个数字:第一个数字
,表示
乘以
是一个光棍数,第二个数字
是这个光棍数的位数。这样的解不是唯一的,题目要求你输出最小的解。
输入格式:
输入在一行中给出一个不以 5 结尾的正奇数(<1000)。
输出格式:
在一行中输出相应的最小的和
,其间以 1 个空格分隔。
输入样例:
31
输出样例:
3584229390681 15
代码如下
#include <stdio.h>
int main()
{
int m = 1, n = 1, s = 0, x;
scanf("%d", &x); // s * x = n
for (m = 1; n < x; m++) // m 记录 n 的位数
n = n * 10 + 1; // 将 n 扩大到不小于 x
for ( ; ; m++)
{
s = n / x;
printf("%d", s);
if (n % x == 0)
break;
n %= x;
n = n * 10 + 1; // n 储存余数,作为下一次循环的被除数
}
printf(" %d\n", m);
return 0;
}