CCF NOI1037 个位数

来源:互联网 发布:阿里数据分析平台 编辑:程序博客网 时间:2024/06/04 19:27

问题链接CCF NOI1037 个位数




时间限制: 1000 ms  空间限制: 262144 KB

题目描述

  计算ab的个位数。

输入

  一行两个空格隔开的正整数表示a和b。

输出

  输出ab的个位数。

样例输入

2 4

样例输出

6

数据范围限制

  1<=a,b<=100000




问题分析

  这是一个计算a的b次方取其个位的问题

  正解是采用快速模幂运算来实现,计算速度上要比其他方法快。

  “输出ab的个位数”不如说“输出ab的个位”好懂。原题这类含糊的问题太多了。

程序说明

  函数powermod()实现快速模幂计算。

要点详解
  • 一般而言,用位运算代替除法,用移位运算代替除以2运算,运算速度上相对快一些
  • 能够使用复合运算符时,要尽量使用复合运算符。



参考链接:乘方取模计算(模幂计算)。

100分通过的C语言程序:

#include <stdio.h>#define MOD 10// 快速模幂计算函数int powermod(int a, int n, int m){    int res = 1L;    while(n) {        if(n & 1L) {            res *= a;            res %= m;        }        a *= a;        a %= m;        n >>= 1;    }    return res;}int main(void){    int a, b;    scanf("%d%d", &a, &b);    printf("%d\n", powermod(a, b, MOD));    return 0;}



1 0
原创粉丝点击