水題吧?有一個陷阱,不能僅僅保留結果的最後一位,例如14!的最後一位是2,計算2*15,最後一位非零數字是3,其實這是錯的,這裏由於n<=4220<10000,因此應該保留4位。ios
/* ID:jzzlee1 PROB:fact4 LANG:C++ */ //#include<iostream> #include<fstream> using namespace std; ifstream cin("fact4.in"); ofstream cout("fact4.out"); int cal(int x) { while(x%10==0) x/=10; return x>10000?x%10000:x; } int main() { int n; cin>>n; int i,ans=1; for(i=2;i<=n;i++) { ans*=i; ans=cal(ans); } ans%=10; cout<<ans<<endl; return 0; }