6576
比例分配问题
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define EPS 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define ll long long
#include <iomanip>
const int MOD = 1E9+7;
const int N = 1000000+5;
const int dx[] = {0,0,-1,1,-1,-1,1,1};
const int dy[] = {-1,1,0,0,-1,1,-1,1};
using namespace std;
ll n,m;
int gcd(ll a,ll b){
if(b==0)return a;
return gcd(b,a%b);
}
int lcm(ll a,ll b){
return a*b/gcd(a,b);
}
int main(){
while(~scanf("%lld%lld",&n,&m)){
ll a[1001];
ll t[1001];
ll w[1001];
ll z=1;
for(ll i=1;i<=n;i++){
scanf("%lld",&a[i]);
z=lcm(z,a[i]);
}
//cout<<z<<endl;
ll sum=0;
for(ll i=1;i<=n;i++){
t[i]=z/a[i];
sum+=t[i];
// printf("t[%d]=%d,sum=%d\n",i,t[i],sum);
}
if(m%sum!=0){
printf("No\n");
continue;
}
printf("Yes\n");
ll g=m/sum;
for(ll i=1;i<=n;i++){
if(i==1){
printf("%lld",t[i]*g);
}
else
printf(" %lld",t[i]*g);
}
printf("\n");
}
return 0;
}