首页 > 其他分享 >除法

除法

时间:2023-02-18 10:11:53浏览次数:26  
标签:++ 除以 n% while 操作 除法

除法
题目描述:
小W在学除法!
现在,小W手头上有一个数字n,他每次可以进行下列三种操作中的一种:
    1.如果n整除2,让n除以2。
    2.如果n整除3,让n除以3后再乘2。
    3.如果n整除5,让n除以5之后再乘6。
小W好奇的是,这个数可以被若干次操作后变为1吗?如果可以,最少需要操作几次呢?

为了防止你随便猜一个答案糊弄小W,小W准备了很多问题来问你。

输入格式输入的第一行为一个正整数T,表示问题个数。接下来T行,每行一个正整数n,表示一个问题。

输出格式输出共T行,对于每个问题,若不能操作得到1,则输出−1;否则输出最少的操作次数。
样例输入:
7
71
710
25
30
14
27
1000000000000000000

我们可以先把2、3操作看作只除以3,只除以5,那么我们可以发现如果n能被操作成1的话n=2^a*3^b*5^c那么我们可以先把n因数里面的2,3,5除掉:

while(n%2==0) a++,n/=2;
while(n%3==0) b++,n/=3;
while(n%5==0) c++,n/=5;            

但是我们只是假设2、3操作没有副作用,那么接下来要来解决副作用

1操作没有副作用,1*a

2操作会*2 我们用1操作解决,2*b

3操作会*6拿2、3操作来解决,4*c

如果以上程序执行完了n=1 输出a+2*b+4*c

否则输出-1

程序:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    long long t,a,b,c,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        a=b=c=0;
        while(n%2==0) a++,n/=2;
        while(n%3==0) b++,n/=3;
        while(n%5==0) c++,n/=5;
        if(n==1) printf("%lld\n",a+b*2+c*4);
        else printf("-1\n");
    }
    return 0;
}

 

标签:++,除以,n%,while,操作,除法
From: https://www.cnblogs.com/wjk53233/p/17132044.html

相关文章

  • 5.3.2_原补码的除法运算
    @目录一、介绍二、原码的除法运算(1)手算除法之十进制1.过程2.原理(2)手算除法之二进制1.过程2.原理(3)机器实现1.恢复余数法原理过程手算模拟总结2.加减交替法恢复余数法简化举......
  • 【CCCC】L2-018 多项式A除以B (25分),多项式除法
    problemL2-018多项式A除以B(25分)这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。输入格式:输入分......
  • 553.optimal-divsion 最优除法
    问题描述553.最优除法解题思路贪心,最优的除法实际上就是把第二个到最后一个元素括起来。代码classSolution{public:stringoptimalDivision(vector<int>&num......
  • python中的除法小数问题
    两种除法/在python3中,/操作符在表达式中时运行的永远是真除法,无论接受任何类型,结果都会保持小数部分。//在python3中,//操作符在表达式中时运行的永远是Floor除法,只有......
  • 试除法求约数
    如果n能被i整除i就是约数#include<bits/stdc++.h>usingnamespacestd;vector<int>get_divisors(intn){vector<int>res;for(inti=1;i<=n/i;......
  • 多项式除法及其应用
    $part~1~$多项式除法01问题描述给定一个\(n\)次多项式\(F(x)\)和一个\(m\)次多项式\(G(x)\),请求出多项式\(Q(x)\),\(R(x)\),满足以下条件:\(Q(x)\)次数......
  • 数论分块(除法分块)
    定义数论分块是个很常见的技巧,常用于计算$$\sum_{i=1}^{n}\left[\frac{k}{i}\right]$$思路原理很简单:设\(t_i\in\{x|x=\left[\frac{k}{i}\right]\}\)我们想办法每次......
  • postgreSQL除法保留小数
    -1例子postgres=#select1/4;?column?----------0(1row)在PG里如果想做除法并想保留小数,用上面的方法却行不通,因为"/"运算结果为取整,并且会截掉小数部分。--2类型转......
  • python教程2--数据类型、变量、 常量、 除法
    1.数据类型1.1整数Python可以处理任意大小的整数,包括负整数。Java中的整数是有范围限制的,比如int的范围限制在-2147483648-2147483647之间。1.2浮点数浮点数也就是小数,如果......
  • python之除法获取真实的结果
    #_*_coding:utf-8_*_from__future__importdivisiona=2b=5print(a/b)#output0.4主要是导入future模块......