国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

2706:麥森數

2019-11-06 06:27:09
字體:
來源:轉載
供稿:網友

2706:麥森數

查看提交統(tǒng)計提示提問總時間限制: 1000ms 內存限制: 65536kB描述形如2p-1的素數稱為麥森數,這時P一定也是個素數。但反過來不一定,即如果P是個素數。2p-1不一定也是素數。到1998年底,人們已找到了37個麥森數。最大的一個是P=3021377,它有909526位。麥森數有許多重要應用,它與完全數密切相關。任務:從文件中輸入P (1000<P<3100000) ,計算2p-1的位數和最后500位數字(用十進制高精度數表示)輸入文件中只包含一個整數P(1000<P<3100000)輸出第1行:十進制高精度數2p-1的位數。第2-11行:十進制高精度數2p-1的最后500位數字。(每行輸出50位,共輸出10行,不足500位時高位補0)不必驗證2p-1與P是否為素數。樣例輸入
1279樣例輸出
38600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087思路:位數計算,對于10來說取對數,log10000=4 ,共5位。一個十進制數有多少位就是10的多少次方+1,所以對2^p這個十進制數取對數,然后結果加一,就是位數。 只需要計算后500位,那么用長度100的數組來存,每次存5位。
#include <iostream>#include <stdio.h>#include <string>#include <cstring>#include <algorithm>#include <cmath>#define mod 100000using namespace std;int ans[110];int main(){    int p;    while(~scanf("%d",&p))    {        PRintf("%d/n",(int)(p*log10(2*1.0))+1);        memset(ans,0,sizeof ans);        ans[0]=1;        int yu=p%10; //余下不足10次單獨計算        p/=10;   //每次計算10位,共計算p/10次        for(int i=1; i<=p; i++)        {            for(int j=0; j<=100; j++) //ans每個單位存一個5位數,計算100個單位,共5*100=500位                ans[j]<<=10;            for(int j=0; j<=100; j++)            {                if(ans[j]>=mod)                {                    ans[j+1]+=ans[j]/mod; //當前ans[j]超過五位數就向前進位                    ans[j]%=mod;                }            }        }        for(int i=1; i<=yu; i++)        {            for(int j=0; j<=100; j++) //每次乘以2                ans[j]<<=1;            for(int j=0; j<=100; j++)            {                if(ans[j]>=mod)                {                    ans[j+1]+=ans[j]/mod; //當前ans[j]超過五位數就向前進位                    ans[j]%=mod;                }            }        }        ans[0]--;  //2^p總是以2,4,6,8結尾        for(int i=99; i>=0; i--)        {            printf("%05d",ans[i]);            if(i%10==0)               puts("");        }       // puts("");    }    return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 武邑县| 宁武县| 资兴市| 罗城| 兴业县| 姚安县| 铜鼓县| 晋中市| 措勤县| 上栗县| 临湘市| 新邵县| 榕江县| 博罗县| 奉节县| 都江堰市| 乃东县| 乐都县| 洛扎县| 连江县| 高陵县| 绥芬河市| 九台市| 莫力| 台前县| 南昌县| 康保县| 安阳市| 体育| 包头市| 房产| 鄯善县| 阿荣旗| 镇宁| 都匀市| 齐齐哈尔市| 浑源县| 陆川县| 云南省| 彰化市| 尉氏县|