hdu A Simple Stone Game
2017-11-11 20:51
357 查看
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=6237题解:
stm看的时候没看到每次只能取一个,蛇皮了半天。唉。。。。。。直接暴力枚举质因子就行了。
PS:这里处理质因子的时候,只要在线直接处理就行了,如果进行离线处理会RE的。
代码:
#include <map> #include <cmath> #include <vector> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define met(a,b) memset(a,b,sizeof(a)) #define inf 0x7fffffff const int maxn = 1e5+10; typedef long long ll; ll num[maxn]; int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); ll ans=0; for(int i=0;i<n;i++) { scanf("%lld",&num[i]); ans+=num[i]; } vector<ll>prime; prime.clear(); for(ll i=2;i*i<=ans;i++) { if(ans%i==0) { prime.push_back(i); while(ans%i==0) ans/=i; } } if(ans>1) prime.push_back(ans); sort(prime.begin(),prime.end()); vector<ll>pp; ll sum=0; ll cnt=0; ll MIN=1e10+10; for(int i=0;i<(int)prime.size();i++) { sum=0; pp.clear(); for(int j=0;j<n;j++) { ll temp=num[j]%prime[i]; if(temp) { pp.push_back(temp); sum+=temp; } } sort(pp.begin(),pp.end()); cnt=0; for(int j=(int)pp.size()-1;j>=0;j--) { cnt+=prime[i]-pp[j]; sum-=prime[i]; if(sum<=0) break; } MIN=min(MIN,cnt); } printf("%lld\n",MIN); } }
相关文章推荐
- HDU - 6237 A Simple Stone Game (2017CCPC哈尔滨站 思维)
- HDU 6237 A Simple Stone Game
- HDU 6237 A Simple Stone Game(CCPC 2017 哈理工)(素数分解+贪心)(好题)
- A simple stone game - HDU 2486 K倍递减博弈
- hdu 2486 A simple stone game
- hdu 6237 A Simple Stone Game
- HDU 6237/2017CCPC哈尔滨 A Simple Stone Game【质因子】
- HDU A simple stone game [K倍动态减法游戏]
- 【hdu 2486】A simple stone game
- hdu 6237 A Simple Stone Game (求素因子+贪心)
- hdu 2486 A simple stone game
- HDU-6237 A Simple Stone Game (素数筛 + 贪心)
- hdu 2486/2580 / poj 3922 A simple stone game 博弈论
- HDU 2486 (HDU 2580, POJ 3922) A simple stone game K倍动态减法游戏
- HDU_2580 A simple stone game
- [K倍动态减法问题] HDU 2486 & HDU2580 & POJ3922 a simple stone game
- HDU-6237:A Simple Stone Game(数论)
- HDU 2486 HDU2580 POJ3922 a simple stone game
- POJ 3922 A simple stone game
- POJ 3922 A simple stone game(K倍减法游戏)