Posted on 2011-05-02 14:48
acpeng 閱讀(640)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
ACM程序
OJ地址鏈接:http://acm.cugb.edu.cn/JudgeOnline/showproblem?problem_id=1022
Description
若一個(gè)整數(shù)Y的個(gè)位數(shù)為X,將X移到最高位得到的恰好是Y的X倍,稱Y為一個(gè)X倍數(shù)。例如,0是一個(gè)0倍數(shù),1是一個(gè)1倍數(shù)。
Input
無
Output
請(qǐng)依次輸出最小的0倍數(shù)、1倍數(shù)、2倍數(shù)、……9倍數(shù)。每個(gè)X倍數(shù)輸出一行。
Sample Input
無
Sample Output
0
1
……
……
……
Hint
即使是最小的X倍數(shù)也可能是一個(gè)非常大的整數(shù),甚至遠(yuǎn)遠(yuǎn)超出int所能表達(dá)的范圍。
對(duì)于X倍數(shù),設(shè)定一個(gè)數(shù)組(事實(shí)上應(yīng)該是字符串,節(jié)省空間),第0位賦予初始值k,k=2,3,……9,依次與k相乘得到上一位,即可。注意循環(huán)跳出的條件。
代碼:
#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==k && c==0)
break;
}
for(j=i;j>=0;j--)
{
printf("%c",str[j]);
}
printf("\n");
memset(str,0,sizeof(str));
}
return 0;
}