import java.util.*; public class Main { //MAX就是根据输入的n所创建的数组大小 final static int MAX = (int) (1e6+5); final static int MOD = (int) (1E9+7); static boolean[] visited = new boolean[MAX]; public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); in.close(); System.out.println(helper(n)); } private static long helper(int n) { //最终的输出值 long ans = 1; //1的位置肯定是Y,固定的。所以从2开始计算 for(int i=2;i<=n;i++) { //保存i的幂的次数 int count = 0; //当visited[i]是true的时候,说明它是前面某个数的倍数,那他的值也就不由他决定了,没有必要继续往下走了, if(visited[i]) continue; //将i的倍数的位置全部设定为true,以后经过这个位置就跳过继续循环 for(int j=i+i;j<=n;j+=i) { visited[j] = true; } long mi = i; //计算i的幂的次数,值要小于等于n while(mi <= n) { count++; mi = mi*i; } //计算有多少和合法的组合 ans = ans * (count+1) % MOD; } return ans; } }
点赞 评论

相关推荐

2025-12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
2025-12-17 11:44
吉首大学 平台产品
黑着眼圈看手机:pdd秋招笔试挂了,春招还行吗
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务