「欧拉定理」[SDOI2008]仪仗队

news/2024/10/21 7:38:39/

[SDOI2008]仪仗队

https://ac.nowcoder.com/acm/problem/20313

题目描述

作为体育委员,C君负责这次运动会仪仗队的训练。

仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。

1644234514514

现在,C君希望你告诉他队伍整齐时能看到的学生人数。

输入描述

共一个数N。

输出描述

共一个数,即C君应看到的学生人数。

样例

#1

4
9

提示

  • 对于 100% 的数据, 1 ≤ N ≤ 40000 1 \le N \le 40000 1N40000

解析

1644237028500

AC Code

public class Main {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static StreamTokenizer st = new StreamTokenizer(br);static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));static final int MAX = 40005;static int[] prime = new int[MAX];static int[] euler = new int[MAX];static boolean[] vis = new boolean[MAX];static int cnt;public static void main(String[] args) throws Exception {int n = nextInt();eulers(n);int ans = 0;for(int i = 1; i <= n - 1; i++) {ans += euler[i];}ans = ans * 2 + 1;System.out.println(ans);}public static void eulers(int n) {euler[1] = 1;for(int i = 2; i <= n; i++) {if(!vis[i]) { // 判断是不是素数prime[++cnt] = i;euler[i] = i - 1;}for(int j = 1; j <= cnt && i * prime[j] <= n; j++) {vis[prime[j] * i] = true; // 将 prime[j] * i 标识为不是素数if(i % prime[j] == 0) { // 判断 prime[j] 是否为 i 的约数euler[prime[j] * i] = euler[i] * prime[j];break;} else {// prime[j] - 1 就是 euler[prime[j]],利用了欧拉函数的积极性euler[prime[j] * i] = euler[i] * (prime[j] - 1);}}}}public static int nextInt() throws Exception {st.nextToken();return (int) st.nval;}public static String nextStr() throws Exception {st.nextToken();return st.sval;}
}

ring nextStr() throws Exception {
st.nextToken();
return st.sval;
}
}



http://www.ppmy.cn/news/53824.html

相关文章

Redis到底是多线程还是单线程?

Redis 是单线程的&#xff01; Redis 是非常的快的&#xff01;Redis 是基于内存操作&#xff0c;CPU 不是 Redis 性能瓶颈&#xff0c;内存和网络带宽&#xff08;因为 IO 时需要使用&#xff09;才是 Redis 的性能瓶颈。 Redis 为什么不使用多线程&#xff1f; 因为在多线程…

Springboot获取jar包中resources资源目录下的文件

阿萨斯多问题现象&#xff1a; 今天在项目中遇到一个业务场景&#xff0c;需要用到resources资源目录下的文件&#xff0c;然后就在思考一个问题&#xff1a; 当项目打成jar后&#xff0c;Springboot要如何获取resources资源目录下的文件呢&#xff1f; 问题分析&#xff1a; 如…

【前端基础知识】Vue中的变量不是响应式的吗?属性赋值后视图不变化的原因是什么?

目录 &#x1f914;问题&#x1f4dd;回答&#x1f3a8;使用场景动态添加属性动态添加数组元素 ❌注意事项$set只能在响应式对象上使用$set不能用于根级别的属性$set的性能问题 &#x1f4c4;总结 &#x1f914;问题 Vue是一款在国内非常流行的框架&#xff0c;采用MVVM架构&a…

ChatGPT原理剖析

文章目录 ChatGPT常见误解1. 罐头回应2. 网络搜寻重组 ChatGPT真正做的事——文字接龙ChatGPT背后的关键技术——预训练&#xff08;Pre-train&#xff09;一般机器是怎样学习的&#xff1f; ChatGPT带来的研究问题1. 如何精准提出需求2. 如何更改错误3. 侦测AI生成的物件4. 不…

如何优雅的写个try catch的方式!

软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&#xff0c;至少有一半以上的时间都是在处理各种异常情况&#xff0c;所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而…

Leetcode——485. 最大连续 1 的个数

&#x1f4af;&#x1f4af;欢迎来到的热爱编程的小K的Leetcode的刷题专栏 文章目录 1、题目2、滑动窗口3、一次遍历(官方题解) 1、题目 题目&#xff1a;给定一个二进制数组 nums &#xff0c; 计算其中最大连续 1 的个数。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,0…

python基础实战4-python基础语法

1、注释&#xff08;Comments&#xff09; 注释用来向用户提示或解释某些代码的作用和功能&#xff0c;它可以出现在代码中的任何位置。 Python解释器在执行代码时会忽略注释&#xff0c;不做任何处理&#xff0c;就好像它不存在一样。 1.1 代码注释介绍 注释就是对代码的解…

【浓缩概率】浓缩概率思想帮我蒙选择题的概率大大提升!

今天在学习的时候遇到一个很有趣的思想叫作浓缩概率&#xff0c;可以帮我们快速解决一下概率悖论问题&#xff01; 什么是概率 计算概率有下面两个最简单的原则&#xff1a; 原则一、计算概率一定要有一个参照系&#xff0c;称作「样本空间」&#xff0c;即随机事件可能出现…