hdu 1425 Happy 2004

來源:互聯網
上載者:User

標籤:printf   log   sum   bre   lin   body   get   char   blog   

題目連結

hdu 1425 Happy 2004

題解

題目大意:

\[\sum_{d|2004^{x}}d\ mod\ 29\]
記為\(s(2004^x)\)
\(sum(2004^{x})= s(2^2X)) * s(3^X) * s(167^X)\)
$167?mod?29 = 22 $
\(s(2004^X) = s(2^{2X}) * s(3^{X})) * s(22^X)\)
此時底數變為了質數
如果p是素數
\(s(p^n)=1+p+p^2+...+p^n= (p^{n+1}-1) / (p-1) (1)\)
上面的式子帶下來,寫代碼就好了
對於除法取mod需要求逆元
29為素數->快速冪
或者,打個表不就好了嘛233

代碼
#include<cmath>#include<cstdio>#include<algorithm>inline int read() {    int x=0,f=1;    char c=getchar();    while(c<'0'||c>'9')c=getchar();    while(c<='9'&&c>='0')x=x*10+c-'0',c=getchar();    return x;}#define mod 29int x,a,b,c;int pow(int a,int p) {    int ret=1;    for(;p;p>>=1,a=a*a%mod) {        if(p&1)ret=ret*a%mod;    }    return ret;}int main() {    while(1) {        x=read();        if(!x)break;        a=pow(2,2*x+1);        b=pow(3,x+1);        c=pow(22,x+1);        printf("%d\n",(a-1)*(b-1)*15*(c-1)*18%mod);    }    return 0;}

hdu 1425 Happy 2004

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.