回复 10楼 daniel_
每个数都有的。。网上有证明过的。不过有的最小倍数数值小。有的大。。
回复 11楼 萝莉小纯情
你确定?我找到的最小的 99没有
--
我再调一下程序看下
/************************************************************************/ /* 对于任意给定的整数n,存在最小的由0和1构成的10进制整数是它的倍数。求N */ /************************************************************************/ #include <stdio.h> #include <string.h> #include <stdlib.h> char chars[100]; void change(int n, int *a) { //将整数 n转换为二进制字符串 if (0 == n) { *a = 0; return; } change(n / 2, a); chars[(*a)++] = n % 2 + '0'; chars[*a] = '\0'; } int judge(char *a, int n) { //将 2字符串转为整数,并判断是否n的倍数,否返回整数 int num = atoi(a); if (num % n) return 0; else return num; } int main() { int i; int n; int N; scanf("%d", &n); for (int j = 1;;j++) { change(j, &i); if (N = judge(chars, n)) { printf("%ld\n", N); break; } } return 0; }
/************************************************************************/ /* 对于任意给定的整数n,存在最小的由0和1构成的10进制整数是它的倍数。求N */ /************************************************************************/ #include <stdio.h> char chars[100]; void change(int n, int *a) { //将整数 n转换为二进制字符串 if (0 == n) { *a = 0; return; } change(n / 2, a); chars[(*a)++] = n % 2 + '0'; chars[*a] = '\0'; } char *judge(char *a, int n) { int num = 1; for (char *p = a + 1;*p != '\0';p++) { num *= 10 % n; num %= n; num += (*p - '0') % n; } if (num % n) return 0; else return a; } int main() { int i; int n; scanf("%d", &n); for (int j = 1;;j++) { change(j, &i); if (judge(chars, n)) { printf("%s\n", chars); break; } } return 0; }