这个是数论知识,列举一下前面十几个就可以看出规律:
/* ID: qq104801 LANG: C++ TASK: fact4 */ #include <iostream> #include <fstream> #include <cstring> #include <vector> #include <map> #include <list> #include <set> #include <queue> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; void test() { freopen("fact4.in","r",stdin); freopen("fact4.out","w",stdout); int n; cin>>n; int m=1,pp=100000,f; for(int i=1;i<=n;i++) { f=i%pp; m*=f; while(m%10==0) m/=10; while(m/pp>0) m%=pp; } cout<<m%10<<endl; } int main () { test(); return 0; }
test data:
USACO Training Grader Results 8 users online CHN/2 DNK/1 GRC/1 IND/1 SGP/1 TUR/1 USA/1 USER: cn tom [qq104801] TASK: fact4 LANG: C++ Compiling... Compile: OK Executing... Test 1: TEST OK [0.005 secs, 3372 KB] Test 2: TEST OK [0.005 secs, 3372 KB] Test 3: TEST OK [0.005 secs, 3372 KB] Test 4: TEST OK [0.005 secs, 3372 KB] Test 5: TEST OK [0.008 secs, 3372 KB] Test 6: TEST OK [0.005 secs, 3372 KB] Test 7: TEST OK [0.011 secs, 3372 KB] Test 8: TEST OK [0.008 secs, 3372 KB] Test 9: TEST OK [0.008 secs, 3372 KB] Test 10: TEST OK [0.008 secs, 3372 KB] All tests OK. YOUR PROGRAM ('fact4') WORKED FIRST TIME! That's fantastic -- and a rare thing. Please accept these special automated congratulations. Here are the test data inputs: ------- test 1 ---- 1 ------- test 2 ---- 2 ------- test 3 ---- 7 ------- test 4 ---- 14 ------- test 5 ---- 143 ------- test 6 ---- 645 ------- test 7 ---- 777 ------- test 8 ---- 888 ------- test 9 ---- 999 ------- test 10 ---- 1000 Keep up the good work! Thanks for your submission!