原本以为是非常水的题目
原来还是有点搞头的
先有f[i]表示多少bit
然后找到最大的n使得n!<2^f[i];
果断log....
#include<stdio.h>
#include<math.h>
int dp[2200];
int f[2200];
int main(){
int i,j;
f[1959]=2;
for(i=1960;i<=2160;i++){
if(i%10!=0)f[i]=f[i-1],dp[i]=dp[i-1];
else {
f[i]=2*f[i-1];
double res=0;
double max=f[i]*log(2);
for(j=1;res<=max;j++)res+=log(j);
j--;j--;
dp[i]=j;
}
}
int n;
while(scanf("%d",&n)!=EOF&&n)printf("%d\n",dp[n]);
return 0;
}
解码复杂数学题目的高效算法策略
本文深入探讨了一道看似简单的数学题目背后的复杂逻辑,通过巧妙运用数学原理和算法,揭示了解决类似问题的有效策略。从基本的数学概念出发,逐步引入更高级的数学工具,最终利用对数函数解决核心问题,展示了算法在解决实际问题中的强大能力。
359

被折叠的 条评论
为什么被折叠?



