posts - 74,  comments - 33,  trackbacks - 0

Xiaoming has just come up with a new way for encryption, by calculating the key from a publicly viewable number in the following way:
Let the public key N = AB, where 1 <= A, B <= 1000000, and a0, a1, a2, …, ak-1 be the factors of N, then the private key M is calculated by summing the cube of number of factors of all ais. For example, if A is 2 and B is 3, then N = AB = 8, a0 = 1, a1 = 2, a2 = 4, a3 = 8, so the value of M is 1 + 8 + 27 + 64 = 100.
However, contrary to what Xiaoming believes, this encryption scheme is extremely vulnerable. Can you write a program to prove it?

Input

There are multiple test cases in the input file. Each test case starts with two integers A, and B. (1 <= A, B <= 1000000). Input ends with End-of-File.
Note: There are about 50000 test cases in the input file. Please optimize your algorithm to ensure that it can finish within the given time limit.

Output

For each test case, output the value of M (mod 10007) in the format as indicated in the sample output.

Sample Input

2 2
1 1
4 7

Sample Output

Case 1: 36
Case 2: 1
Case 3: 4393


Author: 2008 Asia Hangzhou Regional Contest Online
这道题是杭州赛区的网络预选赛的赛题,当时打死也没过,现在也没有当时的代码了,不知道哪里错了,今天一看想起了一个公式就是
1^3+2^3+……n^3=(n)^2*(n+1)*^2/4;记得这个公式还是高二老师教会的着,具体证明我们可以数学归纳法证明一下,简单的很自己证明吧!
而那时自己网络赛的时候不知道怎么推导出过10007是个循环,可以把b的取模,而现在有了这个公式就可以一步搞定为什么对b取模!
要解题就必须求出a ^b的因子数,这不是难点
证明如下:
N=a1^b1*a2^b2*……*aN^bN;根据排列组合原理我们知道N的因子数可以如下解出:
即(b1+1)*(b2+1)*.......*(bN+1);而现在是a^b只需要把(b1*b+1)*(b2*b+1)*.......*(bN*b+1);极为因子数:
而这个时候我们知道1<=a,b<=1000000超出整形范围:我们进一步优化得到
因为有:m*n%x=(m%x*n%x);(m+n)%x=(m%x+n%x);
所以我们必须在过程中优化算法!
这样这道题目就出来了!当然求因子时必不可少素数打表!可以优化打表1000,减少时间!当然还可以把1-10007的密码表打出,更优时间啊
素数打表代码如下:
memset(prim,0,sizeof(prim));
    
for(sign=0,i=2;i<MAXN;i++)
        
if(!prim[i]){
            num[sign
++]=i;
            
for(j=0;i*j<MAXN;j++)
                prim[i
*j]=true;    
        }



posted on 2009-03-23 19:20 KNIGHT 阅读(513) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(8)

随笔档案

文章档案

Friends

OJ

搜索

  •  

最新评论

阅读排行榜

评论排行榜