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 }