找倍数

来源:互联网 发布:yy协议号软件 编辑:程序博客网 时间:2024/05/16 19:07

将十进制数依次转换成二进制就是0,1组成的字典序排序

1146.找倍数

时限:1000ms 内存限制:10000K  总时限:3000ms

描述
对于每个输入的数字(如:2),则要求 给出一个由1,0构成的十进制整数,且该整数为输入数字的某个倍数,且是满足该条件的最小数(如2对应的10)。
 
输入
数字n,n等于0时停止。
 
输出
n的一个满足条件的最小倍数。
 
输入样例
2
0
 
输出样例
  • #include<stdio.h>#include<math.h>int n,t,d,num[30];void hjz(int m){int i=0,j,x=0,a[30];while(m!=0){  a[i]=m%2;  m=m/2;  i++;}d=i;for(j=0;j<d;j++){    num[i-1]=a[j];    i--;}}int check(){int i,j,k,q;k=0;q=0;for(i=0;i<d;i++){  k=num[i]+q*10;  q=k%n;}if(q==0)    return 1;else    return 0;}void search(int m){int i;hjz(m);if(check()==1){   for(i=0;i<d;i++)    printf("%d",num[i]);}else    search(m+1);}int main(){    scanf("%d",&n);    while(n!=0){    search(1);    printf("\n");    scanf("%d",&n);    }    return 0;}
0 0