首页 > 其他 > 详细

棋盘覆盖(大数处理)

时间:2019-03-19 16:01:36      阅读:186      评论:0      收藏:0      [点我收藏+]

f(x)=4*f(x-1)+1

1=<x<=100

技术分享图片

十位数字后溢出  有效9.63位

 技术分享图片

19位数字后溢出  有效18  (9.63*2)

分析:得使用大数处理,与大整数乘法类似

技术分享图片
//计算 N!  30
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=20000;
int n,c,k,i,j;
int f[maxn+1];
int main() 
{
    while(cin>>n){
if(n==0){
    cout<<0<<endl;
    continue;
}
        memset(f,0,sizeof(f));
        f[0]=0;
        for(i=1;i<=n;i++){
            c=0;//表示进位
        for(j=0;j<=maxn;j++){
            f[j]=f[j]*4+c;
            c=f[j]/100000;
            f[j]=f[j]%100000;
        } 
        f[0]+=1;
        c=f[0]/100000;//表示进位
        f[0]%=100000;
        for(j=1;j<=maxn;j++){
            f[j]=f[j]+c;
            c=f[j]/100000;
            f[j]=f[j]%100000;
        }
        }

        for(k=maxn;k>=0;k--)
            if(f[k]!=0) break;
            cout<<f[k];
            for(j=k-1;j>=0;j--)
            printf("%05d",f[j]);//5位的数字不足前面添0 
            cout<<endl;
        }
}
View Code

 

棋盘覆盖(大数处理)

原文:https://www.cnblogs.com/helloworld2019/p/10547667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!