X倍数问题

OJ地址链接:http://acm.cugb.edu.cn/JudgeOnline/showproblem?problem_id=1022
Description

若一个整数Y的个位数为X,将X移到最高位得到的恰好是Y的X倍,称Y为一个X倍数。例如,0是一个0倍数,1是一个1倍数。

Input

Output

请依次输出最小的0倍数、1倍数、2倍数、……9倍数。每个X倍数输出一行。

Sample Input

Sample Output

0

1

……

……

……

Hint

即使是最小的X倍数也可能是一个非常大的整数,甚至远远超出int所能表达的范围。
 
对于X倍数,设定一个数组(事实上应该是字符串,节省空间),第0位赋予初始值k,k=2,3,……9,依次与k相乘得到上一位,即可。注意循环跳出的条件。
代码:

#include < stdio.h >
#include
< string .h >
int  main()
{
    
char  str[ 100 ] = " \0 " ;
    
int  i,c,j,k;
    printf(
" 0\n1\n " );
    
for (k = 2 ;k < 10 ;k ++ )
    {
        str[
0 ] = k + ' 0 ' ;
        i
= 0 ;c = 0 ;
        
while ( 1 )
        {
            str[i
+ 1 ] = ((str[i] - ' 0 ' ) * k + c) % 10 + ' 0 ' ;
            c
= ((str[i] - ' 0 ' ) * k + c) / 10 ;
            i
++ ;
            
if ((str[i] - ' 0 ' ) * k == &&  c == 0 )
                
break ;
        }
        
for (j = i;j >= 0 ;j -- )
        {
            printf(
" %c " ,str[j]);
        }
        printf(
" \n " );
        memset(str,
0 , sizeof (str));
    }
    
return   0 ;
}

你可能感兴趣的:(X倍数问题)