关于#c++#的问题:给出一个不能被2或5整除的整数0≤n≤10000,使得它的十进制表示仅由数字1组成

给出一个不能被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;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

其实不用写代码也知道答案 1 11 111 之类的都是答案。。肯定不能被 2 或者 5 整除

循环一万次?浪费时间诶。。已经知道了需要输出的数字都是 1 组成,拆解数字?不如组装数字

img

#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循环遍历即可

img

代码:

#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;
}