#include<bits/stdc++.h> using namespace std; long long a[100005],b[100005]; int main( ) { // freopen("917.in","r",stdin); int t; cin>>t; while(t--) { long long n,x,ans=0,ok=1; cin>>n>>x; for(int i=1;i<=n;i++) { long long c; cin>>c; b[i]=c; a[i]=c; ans+=c; } while(ok==1) { for(int i=1;i<=n;i++) { if(b[i]%x!=0)//a[i]%x!=0 { ok=0; break; } else { ans+=a[i]; b[i]/=x; } } } cout<<ans<<endl; } }
本来是想筛出每个数最多是x的多少次幂,会在哪里被卡,然后找到特定的k*p了事,原来模拟也能过..