爱丽丝·玛格特罗依德"/>
2803 爱丽丝·玛格特罗依德
2803 爱丽丝·玛格特罗依德
时间限制: 4 s 空间限制: 8000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description
在幻想乡中,爱丽丝·玛格特罗依德是一名居住在魔法森林的魔法使,擅长
召唤人偶。一天她的“机油”帕秋莉找到了她,要他防御雾雨魔理沙对巴瓦卢魔
法图书馆的“破坏”。
她有n点魔法值,每召唤出一个『上海人形』就要消耗若干点(x),最后,
它们造成的威力就是每个人形所消耗的魔法值的总积。
她为了知道能有多少威力,找到了全幻想乡唯一会编程的你,你不会让她
失望吧?
Rewrote From Izayoi Sakuya
输入描述 Input Descriptionn
输出描述 Output Description最大威力
样例输入 Sample Input10
样例输出 Sample Output36
数据范围及提示 Data Size & Hint0<n<10^5
10=2+2+3+3 36=2*2*3*3
分类标签 Tags 点此展开
开放性试题 高精度题解:
小学奥数……?
多拆出3 要不就是2
听题解说是这样的
顺带一提,高精度(+压位)
AC代码:
#include<cstdio> #include<cmath> int n,a[2000]; inline void mul(int t){int j=0;for(int i=1;i<=a[0]+1;i++){a[i]=a[i]*t+j;j=0;if(a[i]>=100000000){j=a[i]/100000000;a[i]=a[i]%100000000;}}if(a[a[0]+1]>0) a[0]++; } inline void zero(int p){for(int q=8-log10(p);q;q--) printf("0"); } int main(){scanf("%d",&n);if(n<=4) printf("%d",n);else{a[1]=3;a[0]=1;if(n%3==0) for(int k=n/3-1;k>0;k--) mul(3);if(n%3==1){for(int k=(n-4)/3-1;k>0;k--) mul(3);mul(2);mul(2);}if(n%3==2){for(int k=(n-2)/3-1;k>0;k--) mul(3);mul(2);}printf("%d",a[a[0]]);for(int k=a[0]-1;k>=1;k--){zero(a[k]);printf("%d",a[k]);}}return 0; }
转载于:.html
更多推荐
2803 爱丽丝·玛格特罗依德
发布评论