【题目描述】
爱丽丝·玛格特罗依德有n(0 < n < 10^5)点魔法值,每召唤出一个『上海人形』就要消耗x点魔法,最后,它们造成的威力就是每个人形所消耗的魔法值的总积。
【输入描述】
输入一个数n。
【输出描述】
输出一个数表示最大威力。
【样例输入】
10
【样例输出】
36
【数据范围及提示】
样例中,10=2+2+3+3,36=2*2*3*3。
源代码: #include<cstdio> #include<cstdlib> int n,Length=1,Ans[60000]; int Get(int T) //高精度乘法。 { int i[60000]; i[1]=0; for (int a=1;a<=Length;a++) { Ans[a]*=T; Ans[a]+=i[a]; i[a+1]=Ans[a]/10; Ans[a]%=10; } if (i[Length+1]) { Length++; Ans[Length]=i[Length]; } } void Solve() { while (n) if (n==4) { n-=4; Get(4); } else if (n==2) { n-=2; Get(2); } else if (n>=3) { n-=3; Get(3); } else if (n==1) { printf("1"); exit(0); } } int main() { scanf("%d",&n); Ans[1]=1; Solve(); for (int a=Length;a>0;a--) printf("%d",Ans[a]); return 0; } /* 解题思路: 一道红果果的数学奥赛题。尽量分成3,不足的就分成2。 */
时间: 2024-09-29 23:50:33