题意
Fedya studies in a gymnasium. Fedya's maths hometask is to calculate the following expression:
(1^n + 2^n + 3^n + 4^n) 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 ≤ 10^10^5). The number doesn't contain any leading zeroes.
Output
Print the value of the expression without leading zeros.
思路
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ll ans;
for(int n=1;n<=100;n++)
{
ans=pow(1,n)+pow(2,n)+pow(3,n)+pow(4,n);
ans%=5;
cout<<ans<<endl;
}
}
根据伟大的打表我们可以发现随着n的增长 答案是 0 0 0 4 0 0 0 4 0 0 0 4 如此类推,所以可以直接得出结论只要n%4==0,那答案就是4,其他都是0。所以我很naive的直接上了代码结果就直接wa了,因为输入的数字很大,所以要用特殊方法处理一下。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
int ans=0;
ll n;cin>>n;
if(n%4==0)
ans=4;
cout<<ans<<endl;
}
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+10;
char s[maxn];
int a[maxn];
int main()
{
int ans=0;
cin>>s;
int sum=0;
for(int i=0;i<strlen(s);i++)
{
a[i]=s[i]-'0';
if(sum<10);
sum*=10;
sum+=a[i];
sum%=4;
}
if(sum%4==0)
ans=4;
cout<<ans<<endl;
}