c++_包子湊數


標題:包子湊數ios

小明幾乎天天早晨都會在一家包子鋪吃早餐。他發現這家包子鋪有N種蒸籠,其中第i種蒸籠剛好能放Ai個包子。每種蒸籠都有很是多籠,能夠認爲是無限籠。函數

每當有顧客想買X個包子,賣包子的大叔就會迅速選出若干籠包子來,使得這若干籠中剛好一共有X個包子。好比一共有3種蒸籠,分別能放三、4和5個包子。當顧客想買11個包子時,大叔就會選2籠3個的再加1籠5個的(也可能選出1籠3個的再加2籠4個的)。spa

固然有時包子大叔不管如何也湊不出顧客想買的數量。好比一共有3種蒸籠,分別能放四、5和6個包子。而顧客想買7個包子時,大叔就湊不出來了。操作系統

小明想知道一共有多少種數目是包子大叔湊不出來的。code

輸入
----
第一行包含一個整數N。(1 <= N <= 100)
如下N行每行包含一個整數Ai。(1 <= Ai <= 100) blog

輸出
----
一個整數表明答案。若是湊不出的數目有無限多個,輸出INF。內存

例如,
輸入:
2
4
5 ci

程序應該輸出:
6 資源

再例如,
輸入:
2
4
6 編譯器

程序應該輸出:
INF

樣例解釋:
對於樣例1,湊不出的數目包括:1, 2, 3, 6, 7, 11。
對於樣例2,全部奇數都湊不出來,因此有無限多個。

資源約定:
峯值內存消耗(含虛擬機) < 256M
CPU消耗 < 1000ms


請嚴格按要求輸出,不要多此一舉地打印相似:「請您輸入...」 的多餘內容。

注意:
main函數須要返回0;
只使用ANSI C/ANSI C++ 標準;
不要調用依賴於編譯環境或操做系統的特殊函數。
全部依賴的函數必須明確地在源文件中 #include <xxx>
不能經過工程設置而省略經常使用頭文件。

提交程序時,注意選擇所指望的語言類型和編譯器類型。

#include <iostream>
#define MAXN 10010   //最多湊出的包子個數爲100*100 
using namespace std;
int gcd(int x,int y){
    int temp;
    while(y!=0){
        temp=x%y;
        x=y;
        y=temp;
    }
    return x;
}
int main(){
    int  n;
    int a[100];
    bool dp[MAXN];
    int count=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int g=a[0];
    for(int i=1;i<n;i++){
        g=gcd(g,a[i]);
    }
    if(g!=1){
        cout<<"INF"<<endl;
    }
    else{
        dp[0]=true;
    for(int i=0;i<n;i++){
        for(int j=0;j<MAXN;j++){
            if(dp[j]){
                dp[j+a[i]]=true;
                
            }
        }
    }
    
    for(int i=0;i<MAXN;i++){
        if(!dp[i]){
        count++;    
        }
    }
    cout<<count<<endl;    
    }

}
相關文章
相關標籤/搜索