UVa 10162 Last Digit (数学规律)

原创 2013年12月04日 18:02:52

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1103


1. 先看单个数的规律:

0^n%10: 0

1^n%10: 1

2^n%10: 2,4,8,6

3^n%10: 3,9,7,1

4^n%10: 4,6

5^n%10: 5

6^n%10: 6

7^n%10: 7,9,3,1

8^n%10: 8,4,2,6

9^n%10: 9,1

2. 因为最大循环长度为4,所以我们可以看到,i^i%10和i^(i+20)%10是相同的,也就是说,i^i%10的周期是20

而(1^1+……+20^20)%10=4,

所以(1^1+……+40^40)%10=8,

(1^1+……+60^60)%10=2,

(1^1+……+80^80)%10=6,

(1^1+……+100^100)%10=0,

这么看来,S(N)%10=S(N%100)%10

所以考虑N的后两位即可。

3. 为了简化运算,还可以进一步分析:

不妨算一算(1^1+……+10^10)%10=7,所以(11^11+……+20^20)%10=7(上面得出的4-7+10=7),所以每十个数的和模10余7

那么我们算出S(1)~S(10)的个位及[S(11)-S(10)]~[S(20)-S(10)]的个位a[i]后,

记b=N%100,则ans=(b/10*7+a[b%20])%10


完整代码:

/*0.015s*/

#include<bits/stdc++.h>
using namespace std;
const int a[20] = {0, 1, 5, 2, 8, 3, 9, 2, 8, 7, 0, 1, 7, 0, 6, 1, 7, 4, 8, 7}; ///S(N)%10,0<=N<=19

char s[105];

int main()
{
	int len, b, c;
	while (gets(s), s[0] != '0')
	{
		len = strlen(s);
		if (len == 1) b = s[0] & 15;
		else b = atoi(s + len - 2);
		printf("%d\n", (b / 10 * 7 + a[b % 20]) % 10);
	}
	return 0;
}


UVa 10162 - Last Digit

题目:已知S = Σ(i^i)其中(1 分析:数论,找规律。设 i = 10*a+b 则 i^i = (10*a+b)^(10*a+b),有:             记f(i)=(i^i)% ...
  • mobius_strip
  • mobius_strip
  • 2014年07月14日 11:57
  • 1460

uva 10162 - Last Digit(数论)

题目链接:uva 10162 - Last Digit 题目大意:给定n,求s的个位的数值是多少。 解题思路:对于ii,重复周期为20,这样就有 1 4 7 6 5 6 3 6 9 ...
  • u011328934
  • u011328934
  • 2014年07月04日 21:54
  • 1940

HDOJ 1066-Last non-zero Digit in N!【阶乘最后非零解:模板】

Last non-zero Digit in N! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (...
  • qq_29600137
  • qq_29600137
  • 2016年04月27日 18:34
  • 832

(hdu step 2.3.7)Last non-zero Digit in N!(阶乘最后一位非零位)

在写题解之前给自己打一下广告哈~。。抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下:http://edu.csdn.net/course/detail/209题目:Last non-zero...
  • caihongshijie6
  • caihongshijie6
  • 2015年02月05日 10:55
  • 1228

UVA - 10162 Last Digit

Description  Problem B.Last Digit  Background  Give you a integer number N ...
  • u011345136
  • u011345136
  • 2014年08月09日 21:01
  • 1370

10162 - Last Digit (数论+周期规律)

UVA 10162 - Last Digit 题目链接 题意:求S=(11+22+...NN)%10 思路:打出0-9的每个周期,发现周期为1或2或4、所以S是以20一个周期,打出表...
  • u011217342
  • u011217342
  • 2014年07月03日 19:54
  • 929

UVa 10162 Last Digit (数学规律)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&p...
  • synapse7
  • synapse7
  • 2013年12月04日 18:02
  • 1057

UVa:11609 Teams

这个题充分说明了我在组合数性质方面知识的欠缺。 主要用到了kC(k,n)=nC(k-1,n-1)这个公式,最终答案是n*2^(n-1),再用快速幂计算即可。   #include #incl...
  • kkkwjx
  • kkkwjx
  • 2014年01月19日 15:42
  • 501

UVA 10162 - Last Digit

/* ID: BryatnMark LANG: JAVA TASK: AC */ import java.util.*; import java.io.*; import java.math.*; ...
  • fanzhengchen234
  • fanzhengchen234
  • 2013年05月23日 18:09
  • 755

UVA 10162 Last Digit

#include #include #include #include #include #include #define LL unsigned long long using name...
  • u013967323
  • u013967323
  • 2014年07月25日 09:15
  • 302
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 10162 Last Digit (数学规律)
举报原因:
原因补充:

(最多只允许输入30个字)