1 条题解

  • 1
    @ 2023-11-5 15:53:19
    #include <iostream>
    #include <string>
    using namespace std;
    
    int a[35], c[35];
    int x;
    
    void divide(int len, int b) {   //定义一个计算余数的自定义函数 
        for (int i = 0; i < len; i++) {
            x = (a[i] + x * 10) % b;/*将当前的数位上的数字加上
    		                          上一轮的余数,再对除数取模的结果
    								  就是这一轮的余数*/  
        }
    }
    
    int main() {
        string a1;
        int lena, flag = 0;          //定义lena(字符串a1的长度),flag(是否找到答案) 
        cin >> a1;                   // 输入字符串a1
        lena = a1.length();          //获取字符串a1的长度 
        for (int i = 0; i < lena; i++){
            a[i] = a1[i] - '0';      //将字符串a1的每一位转换为int,再放入数组a
        }
    	for (int k = 2; k <= 9; k++){//循环遍历k(2到9) 
            x = 0;                   //余数的初始值为0 
            divide(lena, k);         //使用函数divide() 实现高精度除法,并将余数放到全局变量x 
            if (x == 0) {
                cout << k << ' '; 
                flag = 1;            //将标志变量flag设为1 
            }
        }
        if (flag == 0) {             //如果找不到能整除a的k 
            cout << "none";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1186
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    18
    已通过
    6
    上传者