joj 1199 求n!最右边一位非零数

joj 1199 求n!最右边一位非零数

求模的思想
#include<iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;

  int main()
  {
  //freopen("s.txt","r",stdin);
  //freopen("key.txt","w",stdout);
  int n;
  int temp;
  while(cin>>n)
  {
  cout<<setw(5)<<n<<" -> " ;
  temp=1;
  for(int j=1;j<=n;j++)
  {
   int i=j;
   while(i%10==0)
   {
    i/=10;
   }
   while(i%5==0)
   {
    i/=5;
    temp/=2;
   }
   
   temp*=i;
   
  //¼ÆËãĩλ
   temp%=100000;
  }
  while(temp%10==0)
  temp/=10;
  temp%=10;
  cout<<temp<<endl;
  }

  //system("PAUSE");
  return   0;
  }
一种是分类的思想

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
 long a[10001]={0,1,2,6,4,2},b[5]={0,2,4,8,6},i,m,n;
 for(i=6;i<=10000;i++)
 {
  m=i%5;
  n=i/5;
  if(m!=0)
   a[i]=a[i-1]*i%10;
  else
   a[i]=b[(n-1)%4+1]*a[n]%10;
 }
 while(cin>>n)
  cout<<setw(5)<<n<<" -> "<<a[n]<<endl;
 return 0;
}

你可能感兴趣的:(joj 1199 求n!最右边一位非零数)