您的位置:首页 > 其它

UVA 10515 - Powers Et Al.(数论)

2014-06-22 20:26 316 查看


UVA 10515 - Powers Et Al.

题目链接

题意:求出m^n最后一位数

思路:由于m和n都非常大,直接算肯定是不行的,很容易想到取最后一位来算,然后又很容易想到最后一位不断乘自身肯定会形成周期,并且这个周期还挺短的,于是先求出周期,然后用n去取模该周期求出答案是第几个即可

代码:

#include <stdio.h>
#include <string.h>

int t[10];
int save[10][10];
char n[105], m[105];

int solve(int num) {
int lenn = strlen(n);
int mod = 0;
for (int i = 0; i < lenn; i++) {
mod = (mod * 10 + n[i] - '0') % num;
}
mod--;
if (mod < 0) mod = num - 1;
return mod;
}

int main() {
for (int i = 0; i < 10; i++) {
int tmp = i;
save[i][t[i]++] = i;
tmp = tmp * i % 10;
while (tmp != i) {
save[i][t[i]++] = tmp;
tmp = tmp * i % 10;
}
}
while (~scanf("%s%s", m, n)) {
if (strcmp(m, "0") == 0 && strcmp(n, "0") == 0) break;
int start = m[strlen(m) - 1] - '0';
printf("%d\n", save[start][solve(t[start])]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: