以下是用 C++ 编写的解题代码:

#include <iostream>
#include <string>

using namespace std;

int findP(int n) {
    int p = 1;
    int remainder = 1 % n;
    
    while (remainder != 0) {
        remainder = (remainder * 10 + 1) % n;
        p++;
    }
    
    return p;
}

int main() {
    int N;
    cout << "请输入 N:";
    cin >> N;
    
    int P = findP(N);
    long long result = N * P;
    int digits = to_string(result).length();
    
    cout << "P = " << P << endl;
    cout << "N * P = " << result << endl;
    cout << "位数 = " << digits << endl;
    
    return 0;
}

这个程序首先通过一个函数 findP 来寻找满足条件的最小的 P。函数中使用了循环来计算 N * P 的余数,如果余数不为 0,则继续乘 10 加 1 再取余数,直到余数为 0 时停止循环。循环的次数就是 P 的值。

main 函数中,首先输入 N,然后调用 findP 函数得到 P 的值。接着计算 N * P 的结果,并使用 to_string 函数将结果转换为字符串,然后计算字符串的长度,即为位数。

最后,输出 P 的值、N * P 的值以及位数。


原文地址: https://www.cveoy.top/t/topic/p66p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录