C++输入整数a,b,输出a的b次方的个位数案例源代码

题目描述

1.输入整数a,b,输出a的b次方的个位数

2.给a,b增加一个取值范围例如(0,10000),输入整数a,b,输出a的b次方的个位数

源代码

下面是一个用C++编写的程序,根据输入的整数a和b,输出a的b次方的个位数:

#include <iostream>
using namespace std;

int powerMod(int a, int b) {
    if (b == 0) {
        return 1;
    }
    
    int result = 1;
    while (b > 0) {
        if (b % 2 == 1) {
            result = (result * a) % 10; // 取个位数
        }
        a = (a * a) % 10; // 取个位数
        b /= 2;
    }
    
    return result;
}

int main() {
    int a, b;
    cout << "请输入整数a:";
    cin >> a;
    cout << "请输入整数b:";
    cin >> b;

    int result = powerMod(a, b);
    cout << "a的b次方的个位数为:" << result << endl;

    return 0;
}

运行上述程序,按照提示依次输入整数a和b,程序将输出a的b次方的个位数。

请注意,上述程序使用快速幂算法来计算a的b次方,同时通过每次取个位数来避免整数溢出。

如果你想给整数a和b增加取值范围(0,10000),你可以在输入a和b的地方进行验证。下面是修改后的C++程序:

#include <iostream>
using namespace std;

int powerMod(int a, int b) {
    if (b == 0) {
        return 1;
    }
    
    int result = 1;
    while (b > 0) {
        if (b % 2 == 1) {
            result = (result * a) % 10; // 取个位数
        }
        a = (a * a) % 10; // 取个位数
        b /= 2;
    }
    
    return result;
}

int main() {
    int a, b;
    cout << "请输入整数a(范围:0-10000):";
    cin >> a;
    if (a < 0 || a > 10000) {
        cout << "输入的整数a不在有效范围内" << endl;
        return 0;
    }

    cout << "请输入整数b(范围:0-10000):";
    cin >> b;
    if (b < 0 || b > 10000) {
        cout << "输入的整数b不在有效范围内" << endl;
        return 0;
    }

    int result = powerMod(a, b);
    cout << "a的b次方的个位数为:" << result << endl;

    return 0;
}

在上述程序中,我们在输入a和b之后加入了范围验证的代码。首先,我们检查a是否在有效范围(0-10000)内,如果不在范围内,则输出错误信息并终止程序。然后,我们检查b是否在有效范围内,如果不在范围内,则同样输出错误信息并终止程序。

这样,当用户输入的a或b超出了有效范围时,程序会提示错误信息,并结束执行。否则,程序将继续计算a的b次方的个位数并输出结果。

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享