SDUTOJ 1293 乘积最大的分解(数论)

乘积最大的分解
 

思路:

让分解出来的因子有尽可能多的3,剩下的用2补全。

最开始思路错了,WA了好长时间= =!

函数中n == 1的情况应该是不用,经测试数据中没有这组。

*注意用 long long 99的时候会超int的数据范围

 
 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 long long is_(long long n)
 5 {
 6     if(n > 3)
 7     {
 8         long long a, b;
 9         a = n/3;
10         b = n%3;
11         if(b == 1)
12             return pow(3, (a-1))*4;
13         else if(b == 2)
14             return pow(3, a)*2;
15         else
16             return pow(3, a);
17     }
18     else if(n == 3)
19         return 2;
20     else if(n == 2)
21         return 1;
22     else if(n == 1)
23         return 1;
24 }
25 
26 
27 void run()
28 {
29     long long m;
30     while(~scanf("%lld", &m) && m)
31     {
32         printf("%lld
", is_(m));
33     }
34 }
35 
36 
37 int main(void)
38 {
39     run();
40 
41     return 0;
42 }
乘积最大的分解
原文地址:https://www.cnblogs.com/Silence-AC/p/3473899.html