将十进制数依次转换成二进制就是0,1组成的字典序排序
1146.找倍数
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
对于每个输入的数字(如:2),则要求 给出一个由1,0构成的十进制整数,且该整数为输入数字的某个倍数,且是满足该条件的最小数(如2对应的10)。
输入
数字n,n等于0时停止。
输出
n的一个满足条件的最小倍数。
输入样例
2
0
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; }
本文介绍了一种算法,该算法接收一个正整数作为输入,并找到一个由1和0组成的最小整数,该整数既是输入数字的倍数,又是二进制形式的。通过递归搜索来确定满足条件的最小倍数。
767

被折叠的 条评论
为什么被折叠?



