首页 > 编程语言 >一个整数的任意次方很可能产生越界情况,要考虑计算结果是否越界的问题,要避免产生越界问题同时又不使程序结果产生误差。

一个整数的任意次方很可能产生越界情况,要考虑计算结果是否越界的问题,要避免产生越界问题同时又不使程序结果产生误差。

时间:2022-12-24 21:11:36浏览次数:37  
标签:11 last 产生 越界 三位数 次方

题目:编程求出一个整数的任意次方的最后三位数,即求x^y的最后三位数,其中x和y从键盘输入。
程序分析:一个整数的任意次方很可能产生越界情况,要考虑计算结果是否越界的问题,要避免产生越界问题同时又不使程序结果产生误差。

 

其实这道题是会溢出的,但是数学有很奇怪的:

a 的 b 次方的最后三位数

例如  11 的 5 次方 :最后三位数 = 051

如果 11  每次 的 b 次方都取出最后三位数  * 11 那么五次都的最后三位 也是 051 

 

11的5次方 = 161051 

last:11

last:121
last:1331
last:14641
last:161051

 

反正是数学的奥秘

代码:

#include <stdio.h>

int main() {
    int i, a, b, last = 1;
    printf("输入a、b的值:");
    scanf("%d%d", &a, &b);
    for (i = 1; i <= b; i++) {
        last *= a;
//        last = last % 1000;
        printf("last:%d\n", last);
    }
    printf("res:%03d", last); //注意这里需要用 0 填充 C语言只允许0填充

    return 0;
}

 

标签:11,last,产生,越界,三位数,次方
From: https://www.cnblogs.com/bi-hu/p/17003388.html

相关文章