给出一个不能被2或5整除的整数0≤n≤10000,一定存在一个n的倍数,使得它的
十进制表示仅由数字1组成。其中最小的数包含多少个数字?
你题目的解答代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,l=0;
long long int m=0;
cin >> n;
if(n%2==0 || n%5==0)
{
cout << "错误,n需要不能被2或5整除" << endl;
return 0;
}
do {
m = m*10+1;
l++;
} while (m % n != 0);
cout << "最小的数:" << m << " 是" << n << "的" << m/n << "倍, 包含" << l << "个1" << endl;
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
其实不用写代码也知道答案 1 11 111 之类的都是答案。。肯定不能被 2 或者 5 整除
循环一万次?浪费时间诶。。已经知道了需要输出的数字都是 1 组成,拆解数字?不如组装数字
#include <iostream>
int main()
{
//给出一个不能被2或5整除的整数0≤n≤10000,使得它的十进制表示仅由数字1组成
int i, j;
for (i = 1, j = 1; i <= 10000; i = i * 10 + 1, j++)
{
if (i % 2 != 0 || i % 5 != 0);
{
std::cout << i << "\t" << j << std::endl;;
}
}
return 0;
}
for循环遍历即可
代码:
#include <iostream>
using namespace std;
int main()
{
int n;
int ws = 1;
long long t = 1;
cin >> n;//输入n
if (n % 2 == 0 || n % 5 == 0)
cout << "请输入不能被2或5整除的数" << endl;
else
{
for (;;)
{
if (t % n == 0) //n的倍数
break;
else
{
t = t * 10 + 1;
ws++;
}
}
cout << "最小的数:" << t << ",位数:" << ws << endl;
}
return 0;
}