HDU 2189 ( 悼念512汶川大地震遇難同胞——來生一起走 )
阿新 • • 發佈:2017-05-28
input des 分組 end left space 輸入數據 輸出 efi
??
Total Submission(s): 2695 Accepted Submission(s): 1335
Problem Description 媽媽
你別哭
淚光照亮不了
我們的路
讓我們自己
慢慢的走
媽媽
我會記住你和爸爸的模樣
記住我們的約定
來生一起走
上面這首詩節選自一位詩人紀念遇難同胞的作品,並沒有華麗的語言,可是每位讀者都應該能感受到作品傳達的濃濃愛意,或許還有絲絲無奈。確實,太多的關於孩子不幸的報道沖擊著我們每一顆柔弱的心。
Input 輸入數據首先包括一個正整數C,表示有C組測試用例。然後是C行數據。每行包括一個正整數n(2<=n<=150),表示誌願者的總人數。
Output 對於每組測試數據,請輸出分組的方案數目,每一個輸出占一行。
Sample Input
Sample Output
Author lcy
Source 2008-06-18《 ACM程序設計》期末考試——四川加油!中國加油!
哎,當年汶川時。還是小學。依稀記得默哀三分鐘。生命真是脆弱。 母函數的題目。只是變化範圍是素數,所以先打個表記錄150之內的全部素數。 然後母函數模板就能夠過了。
悼念512汶川大地震遇難同胞——來生一起走
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2695 Accepted Submission(s): 1335
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
Author lcy
Source 2008-06-18《 ACM程序設計》期末考試——四川加油!中國加油!
哎,當年汶川時。還是小學。依稀記得默哀三分鐘。生命真是脆弱。 母函數的題目。只是變化範圍是素數,所以先打個表記錄150之內的全部素數。 然後母函數模板就能夠過了。
#include <cmath> #include <stdio.h> #include <vector> #include <map> #include <time.h> #include <cstring> #include <set> #include<iostream> #include <queue> #include <stack> #include <algorithm> using namespace std; #define inf 0x6f6f6f6f #define Max 50000 #define mod 10 int prime[40]; int c1[151]; int c2[151]; int num[151]; int l; void init() { int i,j; num[0]=1; num[1]=1; for(i=2; i<=150; i++) for(j=i*i; j<=150; j+=i) num[j]=1; for(i=2; i<=150; i++) if(!num[i]) prime[l++]=i; //素數表。。 } int main() { init(); int n,t,i,j,k; memset(c2,0,sizeof(c2)); for(i=0; i<=150; i+=2) //第一個素數是2,所以這裏的增量是2. c1[i]=1; for(i=1; i<=34; i++) { for(j=0; j<=150; j++) { for(k=0; k+j<=150; k+=prime[i]) //每次的添加都是第i個素數的值。。 c2[k+j]+=c1[j]; } for(j=0; j<151; j++) { c1[j]=c2[j]; c2[j]=0; //printf("%d\n",c1[j]); } } cin>>t; while(t--) { cin>>n; cout<<c1[n]<<endl; } return 0; }
HDU 2189 ( 悼念512汶川大地震遇難同胞——來生一起走 )