hdu1164 Eddy's research I(数论:唯一分解式)

2024-06-14 03:32

本文主要是介绍hdu1164 Eddy's research I(数论:唯一分解式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一道很简单的水题有木有啊!!

我又TLE了好几次

原因是我用的是逗号表达式,今天听学长说了才知道,逗号表达式的结果就是最后一个逗号后表达式的结果

所以我的程序会一直判断正确,一直继续执行...

看到题目想都没想就用欧拉函数变形,TLE后我还以为真的是算法问题

想了想和打表差的也不多啊...

欧拉定理15ms:

#include <math.h>
#include <stdio.h>
#define MAXN 10010
int ans[MAXN];
int m, n, cnt, i;void euler_phi(int n) {m = sqrt(n+0.5);cnt = 0;for(i=2; i<=m; ++i) {if(n%i == 0) {n /= i;ans[cnt++] = i;while(n % i == 0) {n /= i;ans[cnt++] = i;}}}if(n > 1) ans[cnt++] = n;return ;
}int main(void) {while(scanf("%d", &n) != EOF) {euler_phi(n);printf("%d", ans[0]);for(i=1; i<cnt; ++i) {printf("*%d", ans[i]);}printf("\n");}return 0;
}


素数打表0ms:

#include <math.h>
#include <stdio.h>
#define MAXN 66010
int ans[20], prime[MAXN], vis[MAXN];
int m, n, cnt, i, j, c;void gen_primes(int n) {int m = (int)sqrt(n+0.5);for(i=2; i<=m; ++i) {if(!vis[i]) {for(j=i*i; j<=n; j+=i) {vis[j] = 1;}}}c = 0;for(i=2; i<=n; ++i) {if(!vis[i])prime[c++] = i;}return ;
}int main(void) {gen_primes(65536);while(scanf("%d", &n) != EOF) {cnt = 0;for(i=0; prime[i]<n; ++i) {j = prime[i];if(n%j == 0) {ans[cnt++] = j;n /= j;while(n%j == 0) {n /= j;ans[cnt++] = j;}}}if(n > 1)ans[cnt++] = n;printf("%d", ans[0]);for(i=1; i<cnt; ++i) {printf("*%d", ans[i]);}printf("\n");}return 0;
}


这篇关于hdu1164 Eddy's research I(数论:唯一分解式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059251

相关文章

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

数论ZOJ 2562

题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个。 分析:反素数定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数。 性质一:一个反素数的质因子必然是从2开始连续的质数。 性质二:p=2^t1*3^t2*5^t3*7

POJ2247数论

p = 2^a*3^b*5^c*7^d 求形如上式的第n小的数。 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.u

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

集群环境下为雪花算法生成全局唯一机器ID策略

雪花算法是生成数据id非常好的一种方式,机器id是雪花算法不可分割的一部分。但是对于集群应用,让不同的机器自动产生不同的机器id传统做法就是针对每一个机器进行单独配置,但这样做不利于集群水平扩展,且操作过程非常复杂,所以每一个机器在集群环境下是一个头疼的问题。现在借助spring+redis,给出一种策略,支持随意水平扩展,肥肠好用。 大致策略分为4步: 1.对机器ip进行hash,对某一个(大于

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩

特征值分解(EVD)和奇异值分解(SVD)—应用于图片压缩 目录 前言 一、特征值分解 二、应用特征值分解对图片进行压缩 三、矩阵的奇异值分解 四、应用奇异值分解对图片进行压缩 五、MATLAB仿真代码 前言         学习了特征值分解和奇异值分解相关知识,发现其可以用于图片压缩,但网上没有找到相应代码,本文在学习了之后编写出了图片压缩的代码,发现奇异值分

2014年暑假培训 - 数论

A银河上的星星 /**************************************************************     Problem: 1014     User: DoubleQ     Language: C++     Result: Accepted     Time:190 ms     Memor

ZOJ1007(数论)

题目链接:点击打开链接 解题思路:   纯粹的数学题,没有输入,直接要求输出.直接给出的求和式子极限到无穷,无法直接计算.Hint里给出了提示,大意就是说求g(x) - g(1)的求和极限,最后再加上g(1)就能求出g(x).   由g(x)  - g(1) 能够得出 1 / k*(k+x) - 1 / k * (k + 1) = (1 - x) / k * ( k + 1) * (k

前端vue项目生成唯一的uuid

一、使用步骤 1.安装uuid 代码如下(示例): npm install -S uuid 2.在需要使用uuid的.vue文件中生成并存储uuid 代码如下(示例): import { v4 as uuidv4 } from 'uuid';mounted () {let sid=''if(localStorage.getItem('sid')){sid=localStorage.g