题目链接:http://codeforces.com/problemset/problem/456/B
B. Fedya and Maths
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Fedya studies in a gymnasium. Fedya's maths hometask is to calculate the following expression:
(1n? ?2n? ?3n? ?4n) mod 5for given value of n. Fedya managed to complete the task. Can you? Note that given number n can be extremely large (e.g. it can exceed any integer type of your programming language).
Input
The single line contains a single integer n (0?≤?n?≤?10105). The number doesn't contain any leading zeroes.
Output
Print the value of the expression without leading zeros.
Sample test(s)
input
output
input
124356983594583453458888889
output
Note
Operation x mod y means taking remainder after division x by y.
Note to the first sample:
循环节为4;
代码如下:
#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>using namespace std;__int64 sum;char s[1000017];int main(){ while(~scanf("%s",s)) { int len = strlen(s); int i, n; int tt = 0; if(len == 1) tt = s[0]-'0'; else { tt = s[len-1]-'0'+(s[len-2]-'0')*10; } n = tt ; if(n > 4) { n %= 4; if(n == 0) n = 4; } sum = 0; int j; for(i = 1; i <= 4; i++) { __int64 t = 1; for(j = 1; j <= n;j++) { t*=i; } t%=5; sum+=t; } printf("%I64d\n",sum%5); } return 0;}