传送门

 

A. Divide it!

题意

  定义整数 n 上的三个操作:

  Codeforces Round #565 (Div. 3)

  如果可以经过上述操作使得 n 变为 1,输出最小操作次数,反之,输出-1;

题解

  易得 2 > 3/2 > 5/4;

  操作执行的优先级 1 > 2 > 3;

  按照优先级依次执行;

AC代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 
 5 ll n;
 6 int Solve()
 7 {
 8     int ans=0;
 9     while(n%2 == 0)
10     {
11         n /= 2;
12         ans++;
13     }
14     while(n%3 == 0)
15     {
16         n /= 3;
17         ans += 2;
18     }
19     while(n%5 == 0)
20     {
21         n /= 5;
22         ans += 3;
23     }
24     return n == 1 ? ans:-1;
25 }
26 int main()
27 {
28     int test;
29     scanf("%d",&test);
30     while(test--)
31     {
32         scanf("%lld",&n);
33         printf("%d\n",Solve());
34     }
35     return 0;
36 }
View Code

相关文章:

  • 2019-09-07
  • 2021-12-13
  • 2021-07-23
  • 2022-01-08
  • 2021-05-23
  • 2021-11-08
  • 2021-07-17
  • 2021-11-16
猜你喜欢
  • 2020-05-15
  • 2022-12-23
  • 2021-09-01
  • 2021-04-06
  • 2021-05-01
相关资源
相似解决方案