hdu2189:悼念512汶川大地震遇難同胞——來生一起走
阿新 • • 發佈:2019-01-30
Problem Description
媽媽
你別哭
淚光照亮不了
我們的路
讓我們自己
慢慢的走
媽媽
我會記住你和爸爸的模樣
記住我們的約定
來生一起走
上面這首詩節選自一位詩人紀念遇難同胞的作品,並沒有華麗的語言,但是每位讀者都應該能感受到作品傳達的濃濃愛意,也許還有絲絲無奈。確實,太多的關於孩子不幸的報道衝擊著我們每一顆柔弱的心。正如溫家寶總理所說“多難興邦”,這場災難讓我們很多80後的年輕人一下子成熟了起來,其中很多人以自願者的身份走上了抗震救災的第一線。
今天,災區又來了n位志願者,抗震救災指揮部需要將他們分為若干個小組,小組的數量不限,但是要求每個小組的人數必須為素數,請問我們有幾種分組的方法呢?
特別說明:
1、可以只有一個組;
2、分組的方法只和人數有關,而與具體的人員無關,即:你可以假設人是無區別的。
Input
輸入資料首先包含一個正整數C,表示有C組測試用例,然後是C行資料,每行包含一個正整數n(2<=n<=150),表示志願者的總人數。
Output
對於每組測試資料,請輸出分組的方案數目,每個輸出佔一行。
Sample Input
3
3
4
5
Sample Output
1
1
2
先把150之前的素數求出來,接下來用類似揹包的方法求。
#include<stdio.h> #include<string.h> int a[151],b[151],c[151]; int main() { int T,n,i,j,t=0; for(i=1;i<151;i++) { if(a[i]==1) b[t++]=i; for(j=2;i*j<151;j++) a[i*j]+=i; } c[0]=1; for(i=0;i<t;i++) for(j=b[i];j<151;j++) c[j]+=c[j-b[i]]; scanf("%d",&T); while(T--) { scanf("%d",&n); printf("%d\n",c[n]); } return 0; }