HDU5339

2019-04-13 15:19发布

题意:给你数a和数组b,然后用a模b中的数,求至少模多少个才能使a==0
思路:直接模拟吧,首先排序,因为模最大的符合(比如2,3,6)然后遍历b,去模其他的所有数,直到为0,标记退出,否则继续遍历b,循环操作。

#include #include #include #include #define INF 999999999 using namespace std; bool cmp(int a,int b) { return a>b; } int solve(int a,int b[],int n) { int ss=INF; int flag; for(int i=1; i<=n; i++) { int temp=a; flag = 0; for(int j=i; j<=n; j++,flag++) if(temp==0) break; else temp=temp%b[j]; if(temp==0) ss=min(ss,flag); } return ss==INF?-1:ss; } int main() { int T; int n,a; int b[21]; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&a); for(int i=1; i<=n; i++) scanf("%d",&b[i]); sort(b+1,b+n+1,cmp); //for(int i=1; i<=n; i++) // printf("%d",b[i]); printf("%d ",solve(a,b,n)); } return 0; }