题目描述
输入样例:
7
输出样例:
4
考察点
import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(reader.readLine()); // d2统计包含数字i包含多少个2,d5统计包含多少个5 int d2 = 0, d5 = 0, c = 1; // 循环结束后因为2和5都被除去了,所以个位肯定不是0 for (int i = 2; i <= n; i++) { int j = i; // 由于一个数只要是10的倍数最后的数字一定是0,因此我们需要可以先除去为0的部分 // 又因为10以内的数字中只有2*5=10,因此我们可以将除去它的因数就可以了 while (j % 2 == 0) { j /= 2; d2++; } while (j % 5 == 0) { j /= 5; d5++; } // 得到所有不包含2和5的倍数的数的乘积的结果的个位数 c = c*j % 10; } // 处理多出来2的倍数,因为一个数仅仅是2的倍数但并不是5的倍数是可以省略的 for (int i = 0; i < d2- d5; i++) { c = c*2 % 10; } writer.write(c + "\n"); writer.flush(); writer.close(); reader.close(); } }