Fedya and Maths
Fedya studies in a gymnasium. Fedya’s maths hometask is to calculate the following expression:
(1n + 2n + 3n + 4n) mod 5
for 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.
Input
4
Output
4
Input
124356983594583453458888889
Output
0
题意: 求 (1n + 2n + 3n + 4n) mod 5
这次是毫无头绪的数论题,参考了一下网上内容,靠打表来发现规律——是一个质数取模的性质:n为4的倍数时答案为4,否则为0。(但是我本人还没有太详细的理解这个性质就直接拿来用了,,写完就学。)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#define Maxn 100005
using namespace std;
int main(){
char seq[Maxn];
int d;
scanf("%s",seq);
for (int i=0;i<strlen(seq);i++) d=(d*10+seq[i]-'0')%4;
if(d==0) cout<<4<<endl;
if(d==4) cout<<0<<endl;
return 0;
}
因为是“粗暴的数论题”,所以没有什么陷阱,靠数学知识。