标题:Mason数
只看楼主
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
 问题点数:0 回复次数:7 
Mason数

Time Limit:1000MS Memory Limit:65536K
Total Submit:141 Accepted:26

Description

形如2P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。
任务:从标准设备输入P(1000<P<3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表示)


Input

输入包含多个测试用例,每个测试用例为一个整数P(1000<P<3100000)。

Output

对应每个测试用例,输出分为两部分
第1行:十进制高精度数2P-1的位数。
第2-11行:十进制高精度数2P的最后500位数字。(每行输出50位,共输出10行,不足500位时高位补0)

Sample Input


1279

Sample Output


386
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000104079321946643990819252403273640855
38615262247266704805319112350403608059673360298012
23944173232418484242161395428100779138356624832346
49081399066056773207629241295093892203457731833496
61583550472959420547689811211693677147548478866962
50138443826029173234888531116082853841658502825560
46662248318909188018470682222031405210266984354887
32958028878050869736186900714720710555703168729087

Hint

不必验证2P-1与P是否为素数。

Source

搜索更多相关主题的帖子: Mason 素数 麦森 Limit 设备 
2007-10-11 21:10
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

是2的幂次方吧.


倚天照海花无数,流水高山心自知。
2007-10-11 21:43
古木夕阳
Rank: 2
等 级:新手上路
威 望:4
帖 子:286
专家分:0
注 册:2007-10-4
得分:0 
   不太懂啊...

美思乐特产  店铺虽小, 胃口不小。 http://shop62436858./
2007-10-11 22:31
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
得分:0 
是求2的幂次方

前世五百次的回眸 才换来今生的擦肩而过
2007-10-12 15:37
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
有没有测试的地方??
我感觉直接一个高精度都是log(p)*500*500感觉没有把握过..

2007-10-12 19:35
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
#include<stdio.h>
#include<math.h>
typedef __int64 int64;
#define mod 100000
void f(int64 b[],int64 a[])
{
int i,j,k;
int64 temp[101]={0};
for(i=0;i<100;i++)
{
for(k=i,j=0;k<100;k++,j++)
{
temp[k]+=a[i]*b[j];
}
for(k=i;k<100;k++)
{
temp[k+1]+=temp[k]/mod;
temp[k]%=mod;
}
}
for(i=0;i<100;i++)
{
b[i]=temp[i];
}
for(i=0;i<100;i++)
{
b[i+1]+=b[i]/mod;
b[i]%=mod;
}
}
int64 a[102];
int64 b[102];
void g(int p)
{
int i;
for(i=0;i<100;i++) a[i]=b[i]=0;
a[0]=1;
b[0]=2;
while(p)
{
if(p%2)
{
f(a,b);
}
f(b,b);
p/=2;
}
}
int main()
{
int p;
double x;
while(scanf("%d",&p)!=EOF)
{
x=p*log10(2);
printf("%d\n",(int)x+1);
g(p);
for(p=99;p>=0;p--) printf("%05I64d",a[p]);
printf("\n");
}
return 0;
}

还有个减法不想写了...
这几天写的太多了

2007-10-12 20:20
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
得分:0 

找个能提交的地点 

http://web.zjdyzx.com/doj/showproblem.asp?problem_id=1033#

那里的p最大才到100万

[此贴子已经被作者于2007-10-12 20:25:38编辑过]


2007-10-12 20:24
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
得分:0 
真诚的希望各位大哥大姐能帮一下忙

前世五百次的回眸 才换来今生的擦肩而过
2007-10-15 22:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-176880-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.227372 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved