B. Math
链接
[http://codeforces.com/contest/1062/problem/B]
题意
给你n,有两种操作要么乘以某个数,要么开根但必须开根后是整数才能开,问你最后能变成最小的数是多少,并输出步数
分析
就是唯一分解定理的应用,以及判断一个是数是否是2的幂次
还有log2取整的写法
详解链接
[https://blog.csdn.net/Hackbuteer1/article/details/6681157]
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[100000];
ll log2(ll value)   //递归判断一个数是2的多少次方
{
	if (value == 1)
		return 0;
	else
		return 1+log2(value>>1);
}
int main(){
    ll n,i;
    ios::sync_with_stdio(false);
    cin. tie(0);cout.tie(0);
    while(cin>>n){
        ll c=0;
        ll k=n;
        ll b[1000];
        int cnt=0;
        int j=0;
        for(i=2;i<=n;i++){
        	cnt=0;
            while(n%i==0){
                a[c++]=i;
                n/=i;
                cnt++;
            }
           if(cnt) b[j++]=cnt;
           cnt=0;
        }
        ll ans=1;
        a[c]=1000007;
        for(i=0;i<c;i++)
        if(a[i]!=a[i+1])
        ans=ans*a[i];
        sort(b,b+j);
        cnt=0;
        if(b[0]!=b[j-1]) cnt+=1;
        if(b[j-1]==1){
        	cout<<k<<' '<<0<<endl;
			return 0;
		}
		else if((b[j-1]&b[j-1]-1)==0) {//判断是否是2的幂次
			cout<<ans<<' '<<log2(b[j-1])+cnt<<endl;
		}
		else
           cout<<ans<<' '<<log2(b[j-1])+2<<endl;
    }
    return 0;
}
B. Math的更多相关文章
- JavaScript中Math对象的方法介绍
		1.比较最值方法 比较最值有两种方法,max() 和 min() 方法. 1.1 max() 方法,比较一组数值中的最大值,返回最大值. var maxnum = Math.max(12,6,43,5 ... 
- JavaScript Math和Number对象
		目录 1. Math 对象:数学对象,提供对数据的数学计算.如:获取绝对值.向上取整等.无构造函数,无法被初始化,只提供静态属性和方法. 2. Number 对象 :Js中提供数字的对象.包含整数.浮 ... 
- Chrome V8引擎系列随笔 (1):Math.Random()函数概览
		先让大家来看一幅图,这幅图是V8引擎4.7版本和4.9版本Math.Random()函数的值的分布图,我可以这么理解 .从下图中,也许你会认为这是个二维码?其实这幅图告诉我们一个道理,第二张图的点的分 ... 
- Math.random()
		Math.random() 日期时间函数(需要用变量调用):var b = new Date(); //获取当前时间b.getTime() //获取时间戳b.getFullYear() //获取年份b ... 
- Math.abs()方法 取绝对值
		定义和用法 abs() 方法可返回数的绝对值. 语法 Math.abs(x) 参数 描述 x 必需.必须是一个数值. 返回值 x 的绝对值. 实例 在本例中,我将取得正数和负数的绝对值: <sc ... 
- C标准头文件<math.h>
		定义域错误可以理解为超出了函数的适用范围,如果发生了定义域错误,设errno为EDOM 如果结果不能表示为double值,则发生值域错误,如果结果上溢,则函数返回HUGE_VAL的值,设errno为E ... 
- HDOJ 2393. Higher Math
		Higher Math Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ... 
- 精灵方向移动问题[math.floor]
		local xd = math.cos(math.rad(self._direction));--self._direction方向角度 local yd = math.sin(math.rad(se ... 
- Java学习笔记-Math类
		并非所有的类都需要main方法.Math类和JOptionPane类都没有main方法.这些类中所包含的方法主要是为了供其他类使用. package welcome; public class Tes ... 
- linux下编译时,链接math库
		在gcc下用到数学函数,如sqrt.在gcc时要加上 -lm 参数,这样告诉编译器我要用到数学函数了 . 如:gcc a.c -o a -lm 当在用Eclipse编译使用数学函数的C语言程序时,如s ... 
随机推荐
- Nginx状态信息(status)配置及信息详解
			nginx状态信息功能的介: Nginx 在编译安装 Nginx 的时候添加 --with-http_stub_status_module 参数,其功能是记录 Nginx 的基本访问状态信息,让使用者 ... 
- python——虚拟环境之virtualenv(windows10,64位)
			1 问题 当我们拥有两个甚至多个项目A.B.C......,各个项目正常运行需求的python运行环境都不相同.而默认情况下,不管哪个项目,使用的都是全局的Python环境.上述情况,造成的问题就是, ... 
- Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作
			# -*- coding: gb2312 -*- #用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作 #作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.co ... 
- [TJOI2018]教科书般的亵渎
			嘟嘟嘟 题面挺迷的,拿第一个样例说一下: 放第一次亵渎,对答案产生了\(\sum_{i = 1} ^ {10} i ^ {m + 1} - 5 ^ {m + 1}\)的贡献,第二次亵渎产生了\(\su ... 
- Linux - CentOS7上的时间同步
			1. 时区的概念 1.1 时区简介 地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早.东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便.所以为了克服时间上 ... 
- Spring Boot开发Web应用
			静态资源访问 在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. 默认配置 Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /s ... 
- 为什么签名前要加"\x19Ethereum Signed Message:\n"
			在以太坊中,可以找到关于上述破损的解释例子.以太坊有两种消息,交易 
- rsync实现数据备份
			rsync实现数据备份 1.简介 rsync(remote synchronization)是一款开源的,快速的,多功能的,可实现全量和增量的的本地或远程数据同步备份的优秀工具. 2.功能 scp.c ... 
- node学习之cookie和session
			c什么是cookie Cookie设计的初衷是 维持浏览器和服务端的状态.http是无状态的,服务端不能跟踪客户端的状态. 浏览器第一次向服务器发送请求,服务器会返回一个cookie给客户端浏览器,浏 ... 
- mac下安装nginx及相关配置
			1. 安装 Homebrew 首先 homebrew是什么?它是Mac中的一款软件包管理工具,通过brew可以很方便的在Mac中安装软件或者是卸载软件.不了解的同学看以看官网(https://br ... 
