设为首页 加入收藏

TOP

UVA - 10162 Last Digit
2015-07-20 17:57:26 来源: 作者: 【 】 浏览:3
Tags:UVA 10162 Last Digit

Description

Download as PDF


Problem B.Last Digit

Background

Give you a integer number N (1<=n<=2*10100). Pleasecompute

S=11+22+33+…+NN

Give the last digit of S to me.

Input

Input file consists of several Ns, each N a line. It is ended with N=0.

Output

For each N give a line containing only one digit, which is the lastdigit of S.

Sample Input

1

2

3

0

Sample Output

1

5

2

题意:求S的个位是多少

思路:看到这么大的数,先打个表试试,发现每20项是个小循环,每100项是个大循环,直接记录100项的结果计算

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       using namespace std; const int maxn = 300; int num[maxn]; char str[maxn]; int main() { int ans = 0; for (int i = 1; i <= 200; i++) { int tmp = 1; for (int j = 1; j <= i; j++) tmp = tmp * i % 10; ans = (ans + tmp) % 10; num[i] = ans; } while (scanf("%s", str) != EOF && str[0] != '0') { int len = strlen(str); int cnt = 0; for (int i = 0; i < len; i++) cnt = (cnt * 10 + str[i] - '0') % 100; if (!cnt) cnt = 100; printf("%d\n", num[cnt]); } return 0; }
     
    
   
  



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA11627-Slalom 下一篇HDU1028Ignatius and the Princes..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: