Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- vector<long long int>isprime;
- bool mark[2000000];
- void sieve()
- {
- int i,j;
- mark[0]=true;
- mark[1]=true;
- for(i=2;i*i<=1000005;i++)
- {
- if(mark[i]==false)
- {
- for(j=2*i;j<=1000005;j+=i)
- {
- mark[j]=true;
- }
- }
- }
- for(i=2;i<=1000005;i++)
- {
- if(mark[i]==false)
- isprime.push_back(i);
- }
- }
- long long int check(long long int n)
- {
- long long int i,j,k,a,b,c,d,ans=1,e,cnt2=0,cnt5=0;
- a=n;
- while(a/2)
- {
- a/=2;
- cnt2++;
- }
- a=n;
- while(a/5)
- {
- a/=5;
- cnt5++;
- }
- if(cnt2<cnt5){
- cnt5-=cnt2;
- cnt2=0;
- }
- else{
- cnt2-=cnt5;
- cnt5=0;
- }
- while(cnt5--)
- ans*=5;
- ans%=10;
- while(cnt2--)
- ans*=2;
- ans%=10;
- for(i=0;i<isprime.size();i++)
- {
- if(isprime[i]==2 || isprime[i]==5)
- continue;
- else
- {
- a=n;
- while(a/isprime[i])
- {
- a/=isprime[i];
- ans=(ans*isprime[i])%10;
- }
- }
- }
- return ans;
- }
- int main()
- {
- sieve();
- long long int n;
- while(cin>>n && n)
- {
- cout<<check(n)<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement