Acwing周赛57-数字操作-(思维+分解质因数)
数字操作
题意:
就是给你一个数n,你可以让n乘以任意正整数x,或者让n开根号。问你最小可以达到的数字是多少,达到这个数字最少要多少次操作。
思考:
刚开始以为就是直接暴力跑一遍,一个数让n乘以x,再开方即可。当然这是错的,乘的可能不够。实际上就是对n先分解质因数,首先要保证达到的数最小,那么就看每个质因子的次幂,让所有的次幂都成为最大次幂,然后再一步一步开方,如果当前的次幂不是2的倍数,也就是不能直接开方了,那么就乘以这个数,让他成为2的倍数,所以用个st标记,是否要乘以数,不管乘多少次,我们都可以转化成第一次全部乘完。
代码:
#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define db double
#define int long long
#define PII pair<int,int >
#define mem(a,b) memset(a,b,sizeof(a))
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);using namespace std;
const int mod = 1e9+7,inf = 1e18;
const int N = 1e5+10,M = 2010;int T,n,m,k;
int va[N];map<int,int > mp;signed main()
{IOS;cin>>n;if(n==1){cout<<1<<" "<<0;return 0;}for(int i=2;i<=n/i;i++){while(n%i==0){mp[i]++;n /= i;}}if(n>1) mp[n]++;int maxn = 0,minn = inf,now = 1;for(auto t:mp){now = now*t.fi;maxn = max(maxn,t.se);minn = min(minn,t.se);}int sum = 0,st = 0;if(minn<maxn) st = 1; //如果有的质因子的次幂不够,那么就要乘数了while(maxn>1){if(maxn&1) //如果此时次幂不是2的倍数,那么乘以now,使得变成2的倍数{st = 1;maxn++;}maxn /= 2;sum++;}cout<<now<<" "<<sum+st; //答案就是质因子的乘积,次数就是开方次数和是否要乘数return 0;
}
总结:
多多思考,想一些算法之类的,用不确定的方法肯定不一定对。
Acwing周赛57-数字操作-(思维+分解质因数)相关推荐
- cdoj 1246 每周一题 拆拆拆~ 分解质因数
拆拆拆~ Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1246 Descri ...
- c语言用质因数分解法求最大公约数,《分解质因数的方法求最大公约数》数学教案...
<分解质因数的方法求最大公约数>数学教案 教学内容:教材P/57页内容"用分解质因数的方法求最大公约数",完成P/57"练一练"及P/58-59页练 ...
- php整形数组求里面的质数,PHP实现的分解质因数操作示例
本文实例讲述了PHP实现的分解质因数操作.分享给大家供大家参考,具体如下: 思路: 如果要计算$num的质数,则至少收集$num以内的质数数组,判断$num是否在质数数组里: 如果否,则判断当前质数$ ...
- python显示给定数字因数分解_Python练习题 010:分解质因数
[Python练习题 010]将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. -------------------------------------------------- ...
- c语言分解质因数的设计思路,C语言开发中分解质因数的操作实例
C语言的开发在日常开发中被广泛使用,而我们都知道C语言是简单的编译方法,爱站技术频道小编今天就为大家带来了C语言开发中分解质因数的操作实例,一起去进入下文看看吧! 首先来看一个最简单的C语言实现质因数 ...
- Composite Coloring(思维 数论(筛素数 分解质因数))
(29条消息) CodeForces - 1332B Composite Coloring(数论+构造)_Frozen_Guardian的博客-CSDN博客 (29条消息) codeforces 13 ...
- AcWing 3491. 完全平方数 题解 分解质因数
题目 思路 由算数基本定理可知,任何一个数都可以分解成它的质因子的乘积. 那么如果一个数是完全平方数,那么在分解质因子的结果中,它每个质因子的次数必定是偶数次,因为这样才可以将他们分配给自己的平方根. ...
- [acwing周赛复盘] 第 91 场周赛20230218
[acwing周赛复盘] 第 91 场周赛20230218 一.本周周赛总结 二. 4861. 构造数列 1. 题目描述 2. 思路分析 3. 代码实现 三.4862. 浇花 1. 题目描述 2. 思 ...
- python编写判断素数的函数并找出前五个摩尼森数_五十八、如何对一个数进行分解质因数...
「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」 ❞ 先问你们一个小学问题:「什么是质因数?小学是对一个数进 ...
最新文章
- 深度学习加速器堆栈Deep Learning Accelerator Stack
- POJ2186:Popular Cows(tarjan+缩点)
- UA OPTI544 量子光学7 2-level system approximation的Density Matrix模型
- eclipse 出现 jar包找不到 问题记录
- 对php专业的认识,对PHP要有个全面的认识
- ElasticSearch学习资料
- 阿格尔克劳奇四分钟逆转 利物浦2-1小胜西汉姆联
- linux 已有目录挂载磁盘
- android中ScrollView和GridView/ListView共存时,ScrollView不在顶部的解决方法
- 计算机的3d软件家庭版,3DOne家庭版 64位
- 软考初级程序员的备考经验分享
- 忍不住笑的笑话(last:20180419)
- 前端分页功能(通用)
- 通过存储控制器访问外设
- Java程序员该如何准备明年的「金三银四」跳槽季,你准备好了吗?
- Python 利用PyQt5写一个简易的串口助手
- 小白一键重装有linux,linux小白说说用linux的感受
- reactjs前端数据导出
- spring boot 一个极简单的 demo 示例
- dreamweaver (dw)cc 2017