日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 4602 - Partition

發布時間:2025/3/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 4602 - Partition 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原題見:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=106940#problem/A

?

題目要求:按題意找出對應數字出現的次數。

? 4=1+1+1+1
??4=1+1+2
??4=1+2+1
??4=2+1+1
??4=1+3
??4=2+2
??4=3+1
??4=4?????????????? 例如此例:1出現的次數為12。

?

?

代碼如下:

1 #include <stdio.h> 2 3 typedef long long ll; 4 ll mod=1e9+7; 5 //#include <stdlib.h> 6 ll qpow(ll n,ll m) 7 { 8 ll ans = 1; 9 while(m>0) 10 { 11 if(m&1) ans = ans * n % mod; 12 n = n * n % mod; 13 m = m >> 1; 14 } 15 return ans; 16 } 17 /*ll fun(ll n,ll k) 18 { 19 if(n==k) return 1; 20 else if(n==k+1) return 2; 21 else if(n-2 == k) return 5; 22 //else if(n-3 == k)return 12; 23 else return 2*fun(n-1,k)+qpow(2,n-3); 24 }*/ 25 int main() 26 { 27 int t; 28 ll ans,n,k; 29 scanf("%d",&t); 30 while(t--) 31 { 32 scanf("%lld%lld",&n,&k); 33 if(k>n) { 34 printf("0\n"); 35 continue; 36 } 37 else 38 { 39 //printf("%lld\n",fun(n,k)); 40 ans=2*qpow(2,n-k-1)%mod+(n-k-1)*qpow(2,n-k-2)%mod; 41 printf("%lld\n",ans%mod); 42 } 43 } 44 45 46 return 0; 47 }

找規律即可,例如將5的實例也寫出后數數=,=會發現

n=%d 1???? 2??? 3? ? 4??? 5

k=1??? 1???? 2??? 5?? 12? 28

k=2??? 0???? 1??? 2??? 5?? 12

k=3??? 0???? 0??? 1??? 2??? 5

k=4??? 0???? 0??? 0??? 1??? 2

k=5??? 0???? 0??? 0??? 0??? 1

?

找到規律吧少年~~~~f(n)=2*f(n-1)+pow(2,n-3)或者ans=2*pow(2,n-k-1)%mod+(n-k-1)*pow(2,n-k-2)%mod

也就是說注釋的部分也是對的,那為什么會變成注釋呢?? =。=因為遞歸層數太多,導致本寶的程序MLT……!!空間超限。。。生平第一次啊。。。。然后就淪為注釋。。。

嗯,就這樣吧!

轉載于:https://www.cnblogs.com/ivangin/p/5201655.html

總結

以上是生活随笔為你收集整理的HDU 4602 - Partition的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。