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\n", 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值