小明幾乎每天早晨都會在一家包子鋪吃早餐。他發現這家包子鋪有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,所有奇數都湊不出來,所以有無限多個。
資源約定:
峰值記憶體消耗(含虛擬機器) < 256m
cpu消耗 < 1000ms
主要判斷何時為inf,有個定理。如果滿足所有數的最大公約數不為1則有無窮個,否則都是有限個。然後利用完全揹包就可以統計了。
#include
#define ll long long
#define inf 0x3f3f3f3f
#define pb push_back
#define rep(i,a,b) for(int i=a;i#define rep1(i,b,a) for(int i=b;i>=a;i--)
using
namespace
std;
const
int n=1e2+100;
int arr[n];
int gcd(int a,int b)
int main()
pp=arr[0];
rep(i,1,n)
if(pp!=1)
}rep(i,1,mx)
cout
0;}
蒸包子湊數 完全揹包 藍橋杯
include include include define maxn 10010 最多湊出的包子個數為100 100 using namespace std int n bool dp maxn 沒有初始化預設為假 int a 105 int pd int a,int b int main els...
1226 包子湊數
給出 n 個數 a i 求有多少個數不能通過這些數湊出 第一行包含乙個整數 n 接下來 n 行,每行包含乙個整數 a i 輸出乙個整數代表答案。如果湊不出的數目有無限多個,輸出inf。資料範圍 1 n 100,1 a i 100 輸入樣例1 2 45輸出樣例1 6輸入樣例2 2 46輸出樣例2 in...
LeetCode 279 完全平方數(完全揹包)
題意 給定正整數 n,找到若干個完全平方數 比如 1,4 9,16 使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。給你乙個整數 n 返回和為 n 的完全平方數的 最少數量 完全平方數 是乙個整數,其值等於另乙個整數的平方 換句話說,其值等於乙個整數自乘的積。例如,1 4 9 和 16 ...