2017ブルーブリッジカップc/c++B組まんじゅう


まんじゅうをそろえる
#拡張ユークリッド#完全リュックサック#証明待ち
この問題の重点はユークリッドを拡張することにある.
この結論を覚えておきましょう.すべての数の公約数が1であれば、寄せられないまんじゅうの数は限られています.そうしないと、寄せられないまんじゅうの数は無限です.
まんじゅうをそろえる
タイトル:まんじゅう
明ちゃんはほとんど毎朝まんじゅう屋で朝食を食べます.彼はこのまんじゅうにN種類の蒸し器が敷かれていることに気づいた.その中のi種類目の蒸し器にはちょうどAi個のまんじゅうが入れられる.どの蒸し器にも非常に多くのケージがあり、無限のケージと考えられます.
お客さんがX個のまんじゅうを買いたいと思っているたびに、まんじゅうを売っているおじさんはすぐにいくつかのまんじゅうを選んで、このいくつかのかごの中にちょうどX個のまんじゅうがあります.例えば全部で3種類の蒸し器があり、それぞれ3、4、5個のまんじゅうを入れることができます.お客様が11個のまんじゅうを買いたい場合、おじさんは2かご3個に1かご5個を追加します(1かご3個に2かご4個を追加することもできます).
もちろん、まんじゅうおじさんはどうしてもお客さんが買いたい数が集まらないこともあります.例えば全部で3種類の蒸し器があり、それぞれ4、5、6個のまんじゅうを入れることができます.客がまんじゅうを7個買おうとしたとき、おじさんは出てこなかった.
明ちゃんは全部で何種類の数がまんじゅうおじさんにはできないのか知りたいと思っています.
入力
最初の行には整数Nが含まれます.(1<=N<=100)以下のN行は、行ごとに整数Aiを含む.(1 <= Ai <= 100)
しゅつりょく
整数は答えを表します.寄せられない数が無限に複数ある場合はINFを出力します.
たとえば、2 4 5と入力します.
プログラム出力:6
たとえば、2 4 6と入力します.
プログラム出力すべき:INF
サンプル解釈:サンプル1について、集約できない数は、1,2,3,6,7,11を含む.サンプル2については,すべての奇数が揃わないため,無限に複数ある.
リソース約定:ピークメモリ消費(仮想マシン含む)<256 M CPU消費<1000 ms
要求通りに出力し、「入力してください」のような余分な内容を蛇足せずに印刷してください.
注意:main関数は0を返す必要があります.ANSI C/ANSI C++標準のみ使用します.コンパイル環境やオペレーティングシステムに依存する特殊な関数を呼び出さないでください.すべての依存する関数は、ソースファイルでincludeがエンジニアリング設定によって共通ヘッダファイルを省略できないことを明確にしなければならない.
プログラムをコミットするときは、所望の言語タイプとコンパイラタイプを選択することに注意してください.
コード#コード#
#include
#include
int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}

int main(){
    int a[110];
    int b[100100];
    int max_=100100;
    int N;
    memset(b,0,sizeof(b));

    scanf("%d",&N);
    for(int i=0;i