首页 > 代码库 > UVA 10515 - Powers Et Al.(数论)
UVA 10515 - Powers Et Al.(数论)
UVA 10515 - Powers Et Al.
题目链接
题意:求出m^n最后一位数
思路:因为m和n都非常大,直接算肯定是不行的,非常easy想到取最后一位来算,然后又非常easy想到最后一位不断乘自身肯定会形成周期。而且这个周期还挺短的,于是先求出周期,然后用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; }
UVA 10515 - Powers Et Al.(数论)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。