AcWing 1381. 一个2的倍数和一个5的倍数乘积一定是10的倍数(java)
原题链接
简单
作者:
季之秋
,
2021-01-23 21:38:26
,
所有人可见
,
阅读 647
引用一位大哥的题解来写一下注释
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int d2=0,d5=0,c=1;//d2代表除去多少个2,d5同理
for(int i=2;i<=n;i++){
int j=i;
while(j%2==0) {j/=2;d2++;}//一个2的倍数乘一个5的倍数一定是10的倍数
while(j%5==0) {j/=5;d5++;}//所以可以除去,
c=c*j%10;//十位不管与个位还是其他位运算都是不影响个位的
}//循环结束后因为2和5都被除去了,所以个位肯定不是0
for(int i=0;i<d2-d5;i++){//处理多出来2的倍数,因为一个2的倍数和一个5的倍数是可以省略的
//因为2比5小所以是d2-d5,
c=c*2%10; //所以要乘多出来的d2,
}//%10保证不超int的最大值 而且%10是因为十位以上不影响个位的值
System.out.println(c);
}
}