1 #include <iostream> 2 using namespace std; 3 //分析:决定末尾数字为0的就是2和5 4 int main(){ 5 long long int n; 6 cin >> n; 7 long long a = 0;//用来记录2的个数 8 long long b = 0;//用来记录5的个数 9 long long ans = 1;//用来记录个位非0数字 10 for(int i = 1; i < n + 1; i++){ 11 int t = i; 12 while(t % 2 == 0){//将2过滤 13 a++; 14 t /= 2; 15 } 16 while(t % 5 == 0){//将5过滤 17 b++; 18 t /= 5; 19 } 20 if(t){ 21 ans *= t; 22 } 23 ans %= 10; 24 } 25 if(a > b){ 26 switch((a - b) % 4){ //找到规律能被2整除的数 27 //2,4,6,8,10,12...个位数字依次是0,2,4,6,8)周期性出现 28 case 0: ans *= 6;break;//如果多出4个2那就是2的4次等于16取个位那就是6 29 case 1: ans *= 2;break; 30 case 2: ans *= 4;break; 31 case 3: ans *= 8;break; 32 default: break; 33 } 34 }else if (a < b){ 35 //处理多出来的5 36 //不管有多少5乘积的个位数字都是5 37 ans *= 5; 38 39 } 40 ans %= 10; 41 cout << ans << endl; 42 return 0; 43 }
原文:https://www.cnblogs.com/AGoodDay/p/10554210.html